我想在同一台服务器上的不同数据库中加入两个表。有人可以告诉我如何在 Zend Frameworks Db 适配器中做到这一点吗?
问问题
2846 次
3 回答
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;
于 2017-08-26T08:10:13.507 回答
-1
如果数据库在同一台服务器上并且您的用户可以访问它们,您可以使用完整路径 - SELECT database_name.table_name.col_name...
否则因为原则,你没有机会加入他们。连接是由 SQL 服务器完成的 - 这需要登录到另一个数据库......
在 Oracle 上有一个称为 DBLink... 的功能,它提供了链接来自不同服务器的其他表/视图的能力。不确定MySQL。
要使用不同的适配器进行查询,您可以使用:
$select1 = new Zend_Db_Select($adapter1);
$select2 = new Zend_Db_Select($adapter2);
但是同样,你仍然受限于这两者的联合......你不能这样做,因为数据库的工作方式的本质
于 2010-01-20T16:47:42.250 回答