Zend Framework 2 не доступ к базе данных из консольного приложения

Я пытаюсь запустить контроллер из консоли, который будет использоваться для работы 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;
}
}

0

Решение

Итак, я наконец-то нашел проблему. Это все о ценности окружающей среды.
HTTPS-запрос получал значение EVN из настроек apache.
И установка в application.config.php была
$ env = getenv (‘APP_ENV’)? : ‘prod’;

и так как мой prod.local.php был пустым, я не работал.

Итак, что я узнал, если вы используете консольное приложение, настройка значения env в apache не сработает, или, по крайней мере, в моем случае, и вместо этого Console будет использовать настройку в application.config.php

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector