在执行查询时,是否有一种简单的方法可以递归地水合所有相关对象?
假设我有以下表格:
Song
Composer
Century
当我执行SongPeer::doSelectJoinAll()
时,只有相关的作曲家会有水分,所以如果我再做$song->getComposer()->getCentury()
之类的事情,就会执行新的查询。
我只想对数据库执行一次查询,所以当我在所有歌曲对象的循环中调用$song->getComposer()->getCentury()
时,它不会在另外n个查询中结束。
希望我很清楚:)
由于
答案 0 :(得分:3)
您使用的是Propel 1.2吗?那个有克里奥尔的人?
如果是这样,请尝试在SongPeer上实现自己的doSelectJoinAll
,以手动在其他表格上添加联接(如世纪)。
如果您使用的是最新版本,则只需在查询中explicit joinWith
the table:
<?php
$song = SongQuery::create()
->joinWith('Song.Composer')
->joinWith('Composer.Century');
$century = $song->getComposer()->getCentury();