ZEND FW:从不同的数据库加入两个表

时间:2010-01-13 13:31:15

标签: mysql zend-framework join zend-db

我想在同一台服务器上的不同数据库中连接两个表。 有人可以告诉我如何在Zend Framework Db适配器中执行此操作吗?

3 个答案:

答案 0 :(得分:0)

答案 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);

但同样,你仍然受限于这两者的结合......你不能这样做,因为数据库工作的本质