我想在同一台服务器上的不同数据库中连接两个表。 有人可以告诉我如何在Zend Framework Db适配器中执行此操作吗?
答案 0 :(得分:0)
见:
connecting to two different databases with Zend Framework
http://blog.keppens.biz/2009/04/zendapplication-multiple-databases.html
http://blog.ekini.net/2009/03/04/zend-framework-connecting-to-2-databases/
答案 1 :(得分:0)
在连接来自不同数据库的两个表之前,从dbAdapter构建tableGateway。
use use Zend\Db\Sql\Select;
use Zend\Db\Sql\Where;
$someCondition=new Where();
$someCondition->equalTo('columnName',$columnValue);
//you can build $this->tableGateway from your DB adapter
$rowset = $this->tableGateway->select(function (Select $select) use ($someCondition) {
$table2forInnerJoin = new \Zend\Db\Sql\TableIdentifier('table2Name', 'table2Database');
$select->join(array('table2Name'=>$table2forInnerJoin),"table1Name.id = table2Name.id");
$select->where($someCondition);
});
return $rowset;
答案 2 :(得分:-1)
如果数据库位于同一服务器上且您的用户都可以访问它们,则可以使用完整路径 - SELECT database_name.table_name.col_name ...
否则,由于原则,你没有机会加入他们。连接由SQL服务器完成 - 需要登录到其他数据库......
在Oracle上有一个名为DBLink的功能...它提供了从不同服务器链接其他表/视图的能力。不确定MySQL。
要使用不同的适配器进行查询,您可以使用:
$select1 = new Zend_Db_Select($adapter1);
$select2 = new Zend_Db_Select($adapter2);
但同样,你仍然受限于这两者的结合......你不能这样做,因为数据库工作的本质