1

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

假设我有以下表格:

Song
Composer
Century

当我做 a 时,SongPeer::doSelectJoinAll()只有相关的作曲家是水合的,所以如果我再做类似的事情$song->getComposer()->getCentury(),将执行一个新的查询。

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

希望我很清楚:)

谢谢

4

1 回答 1

3

您使用的是 Propel 1.2 吗?那个有克里奥尔语的?

如果是这样,请尝试doSelectJoinAll在 SongPeer 上实现您自己的,以在其他表(如世纪)上手动添加连接。

如果您使用的是最新版本,则只需在查询中显式显示joinWith该表

<?php
$song = SongQuery::create()
  ->joinWith('Song.Composer')
  ->joinWith('Composer.Century');
$century = $song->getComposer()->getCentury();
于 2012-04-11T16:42:23.200 回答