我在项目中使用了两个mysql数据库。一个数据库连接基本用户信息和另一个用于存储日常活动的数据库。现在需要组合两个数据库表。
使用用户信息获取用户日常活动,然后需要加入master数据库。
我在PHP中找到了解决方案。但我想在zend framework 1.12上找到解决方案吗?
我使用了用于获取不同操作的multidb功能。
resources.multidb.tb.adapter = "pdo_mysql"
resources.multidb.tb.host = "localhost"
resources.multidb.tb.username = "root"
resources.multidb.tb.password = ""
resources.multidb.tb.dbname = "@@@@@"
resources.multidb.tb.default = true
resources.multidb.pl.adapter = "pdo_mysql"
resources.multidb.pl.host = "localhost"
resources.multidb.pl.username = "root"
resources.multidb.pl.password = ""
resources.multidb.pl.dbname = "#######"
但我想查询不同数据库中的连接2表。
示例
SELECT db1.table1.somefield,db2.table1.somefield FROM db1.table1 INNER JOIN db2.table1 ON db1.table1.someid = db2.table1.someid WHERE db1.table1.somefield =' queryCrit';
答案 0 :(得分:1)
记住Zend's Join Inner declaration:
public function joinInner($name, $cond, $cols = self::SQL_WILDCARD, $schema = null)
并且是'$ this',例如,Zend_Db_Table_Abstract实现,适配器设置为db1(带_setAdapter()),模式设置为“@@@@@”(这不是必需的,因为它将使用它作为默认值):
$select = $this->select(true)->setIntegrityCheck(false)
->from(array('t1'=>'table1'),array('somefield')
->joinInner(array('t1b'=>'table1'),
't1.someid = t1b.someid',
array('t1b.somefield'),
'######')
->where('t1.somefield = ?', $queryCrit);
请注意内部连接方法的第四个参数。
希望这有帮助。