1

クエリを実行するときに、関連するすべてのオブジェクトを再帰的にハイドレイトする簡単な方法はありますか?

次のテーブルがあるとしましょう。

Song
Composer
Century

私が行うとSongPeer::doSelectJoinAll()、関連する作曲家だけがハイドレイトされるので、次にのようなことを行うと$song->getComposer()->getCentury()、新しいクエリが実行されます。

DBに対してクエリを1つだけ実行したいので、$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 に答える