我想使放置在不同的數據庫與Zend框架2.ZF2使兩個不同的數據庫
第一個表被稱爲用戶兩個表之間的連接,並存儲在數據庫中管理之間的連接
第二個表被稱爲層次,並存儲在數據庫中客戶
我加載databas在global.php ES適配器
return array( 'admin' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=admin;host=localhost', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), 'customer' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=customer;host=localhost', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', ), ),
);
但是,當我試圖在userDAO的聯接使用此項功能:
public function getSelect(Hierarchy $hierarchy) { $select = $this->tableGateway->getSql()->select(); $select->where(array('level' => $hierarchy()->getId())); $select->join(array('h' => 'hierarchies'), 'h.id = users.idHierarchy', array('hierarchyId' => 'id', 'level' => 'level')); return $select; }
這產生這樣的SQL語句:
選擇 「用戶」 * 「h」。「id」AS「hierarchyId」,「h」。「level」AS「level」FROM「users」INNER JOIN「hierarchy」AS「h」ON「h」。「id」=「users」 idHierarchy「WHERE」level「='1'
但是當我嘗試使用它,它拋出這個異常:
Zend\Db\Adapter\Exception\InvalidQueryException SQLSTATE[42S02]: Base table or view not found: 1146 Table 'admin.hierarchies' doesn't exist
我試圖表明數據庫的int加入這樣的名字:
$ select-> join(array('h'=>'customer.hierarchies'),'h.id = users.idHierarchy',array('hierarchyId'=>'id','level'=>'level')) ;
但它太引發此異常:
SQLSTATE [42S02]:基表或視圖未找到:1146表 'admin.customer.hierarchies' 不存在
我發現這個網站在哪裏解釋了我可以做到這一點,但它只適用於Zend Framework 1和我正在使用Zend Framework 2.
Using Different Databases with Zend Framework
有人能幫助我嗎?請。
謝謝!