2016-10-03 106 views
0

我想從控制檯運行一個控制器,它將用於cron作業。當我在http控制器中運行以下代碼塊時,它可以很好地工作。 但是,當我使用相同的代碼塊在控制檯控制器和從命令行調用它,我得到數據庫的錯誤消息:zend框架2不會從控制檯應用程序訪問數據庫

「語句無法執行(3D000 - 1046 - 無數據庫中選擇」

我不明白爲什麼它不會從配置的local.php獲取數據庫名稱,也許還有其他參數。 任何暗示表示讚賞

// 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請求正在從apache獲取EVN值ETTING。 而在application.config.php中的設置是 $ env = getenv('APP_ENV')? :'prod';

由於我的prod.local.php是一個空的,我沒有工作。

所以我所學到的是,如果你使用控制檯應用程序,在Apache中的ENV值設置不會踢,或至少在我的情況,而是控制檯將使用設置在application.config.php

相關問題