在Propel中递归水合所有相关的对象
在执行查询时是否有一种简单的方法递归地水合所有相关的对象?在Propel中递归水合所有相关的对象
比方说,我有如下表:
Song
Composer
Century
当我做一个SongPeer::doSelectJoinAll()
只有相关作曲家的水合,所以如果我再这样做$song->getComposer()->getCentury()
,新的查询将被执行。
我想只对数据库执行一个查询,因此当我在所有歌曲对象的循环中调用$song->getComposer()->getCentury()
时,它不会以n个附加查询结束。
希望我清楚:)
感谢
您正在使用的Propel 1.2?与克里奥尔人?
如果是这样,请尝试在SongPeer上实现自己的doSelectJoinAll
,以便在其他表(如世纪)上手动添加联接。
如果您使用的是最新版本的,你只需要在explicit joinWith
the table查询:
<?php
$song = SongQuery::create()
->joinWith('Song.Composer')
->joinWith('Composer.Century');
$century = $song->getComposer()->getCentury();
哇,看起来真棒。不幸的是,我坚持使用Propel 1.3(和旧的标准语法),你知道如果上述仍然可能在版本1.3? – Saze 2012-04-11 17:08:34
自定义'doSelectJoinAll'在1.3中似乎没问题:http://trac.propelorm.org/wiki/Documentation/1.3/Relationships不幸的'joinWith'不是.. – j0k 2012-04-11 17:13:00
啊,我很害怕它不是案件 !我将尝试更新到Propel 1.6,因为它显然是向后兼容的并使用您的解决方案。非常感谢您的帮助! – Saze 2012-04-11 17:21:16
对于第二个那里,我还以为你是用保湿[推进水(HTTP://www.propelzero。 com /)...大声笑 – Jakub 2012-04-11 16:30:54