在Propel中递归地水合所有相关对象

时间:2012-04-11 16:27:27

标签: php propel

在执行查询时,是否有一种简单的方法可以递归地水合所有相关对象?

假设我有以下表格:

Song
Composer
Century

当我执行SongPeer::doSelectJoinAll()时,只有相关的作曲家会有水分,所以如果我再做$song->getComposer()->getCentury()之类的事情,就会执行新的查询。

我只想对数据库执行一次查询,所以当我在所有歌曲对象的循环中调用$song->getComposer()->getCentury()时,它不会在另外n个查询中结束。

希望我很清楚:)

由于

1 个答案:

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