我想使放置在不同的数据库与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
有人能帮助我吗?请。
谢谢!