Я пытаюсь запустить контроллер из консоли, который будет использоваться для работы cron. Когда я запускаю следующий блок кода в контроллере http, он работает отлично.
Но когда я использую тот же кодовый блок в контроллере консоли и вызываю его из командной строки, я получаю сообщение об ошибке базы данных:
«Оператор не может быть выполнен (3D000 — 1046 — база данных не выбрана»
Я не могу понять, почему он не получает имя базы данных и, возможно, другие параметры из config.php local.
Любая подсказка ценится
// CODE BLOCK IN CONTROLLER
$sm = $this->getServiceLocator();
$dbAdapter = $sm->get('Mymodule\Service\Db');
$actualDatabaseTableName = 'Operator';
$OperatorTableGateway = new TableGateway($actualDatabaseTableName,$dbAdapter);
$table = new OperatorTable($OperatorTableGateway);
$result = $table->getOperatorList();
var_dump($result->current());
And model class is
namespace Mydodule\Model;
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Sql\Select;class OperatorTable {
protected $tableGateway;
public function __construct(TableGateway $tableGateway) {
$this->tableGateway = $tableGateway;
}public function getOperatorList() {
$select = new Select('Operator');
$select->columns(array(
'opId'=>'OperatorID',
'ocode'=>'OperatorCode'
));
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}
}
Итак, я наконец-то нашел проблему. Это все о ценности окружающей среды.
HTTPS-запрос получал значение EVN из настроек apache.
И установка в application.config.php была
$ env = getenv (‘APP_ENV’)? : ‘prod’;
и так как мой prod.local.php был пустым, я не работал.
Итак, что я узнал, если вы используете консольное приложение, настройка значения env в apache не сработает, или, по крайней мере, в моем случае, и вместо этого Console будет использовать настройку в application.config.php
Других решений пока нет …