假设我在不同的数据库中有2个表,代表一个模型 (一对一列聚合)。
模式:
Table1:
connection: conn1
columns:
property1: string
Table2:
connection: conn2
columns:
table1_id: integer
property2: string
relations:
Table2:
local: table1_id
foreign: id
type: one
foreignType: one
所以我可以从一个表中检索教义集合:
$objects = Doctrine::getTable('Table1')->findAll()
然后从另一个表中检索每个对象的属性:
foreach ($objects as $object)
{
$object->getProperty2();
}
但是,这将导致来自Table2的过多sql请求(每个对象一个请求)。 我想要实现的是每个表的一个sql请求。
如果两个表在一个数据库中,一个简单的连接就可以了。 有什么建议吗?
答案 0 :(得分:0)
如果有人有兴趣,这里有一个解决方案:基本上你需要执行2个单独的查询,产生2个独立的结果集,然后使用Doctrine_Collection :: populateRelated()方法加入它们。
$res_set1 = Doctrine::getTable('Table1')->findAll()
$res_set2 = Doctrine::getTable('Table2')
->createQuery('t')
->whereIn('t.table1_id', $res_set1->getPrimaryKeys())
->execute();
$res_set1->populateRelated('Table2', $res_set2);