Initsが関連するPropel1.6で生成されたクラスグループがあり、Initsにはそれらに関連するRespsがあります。かなり簡単です。
これら2つのPropelコードの違いがわかりません。$notDeleted
ここで最初のものでは、すべてのループで基準を再作成します。このコードは私が望むことを実行します-それはすべての応答を$data
配列に入れます。
foreach ($group->getInits() as $init) {
$notDeleted = RespQuery::create()->filterByIsDeleted(false);
foreach ($init->getResps($notDeleted) as $resp) {
$data[] = $resp;
}
}
ここで2番目のコードでは、$notDeleted
(私が思っていたのは)明らかな効率上の理由から、基準をループから引き出しました。このコードは私が望むようには機能しません-それはInitsの1つからRespsを取得するだけです。
$notDeleted = RespQuery::create()->filterByIsDeleted(false);
foreach ($group->getInits() as $init) {
foreach ($init->getResps($notDeleted) as $resp) {
$data[] = $resp;
}
}
メソッドが結果をキャッシュする方法と関係があるに違いないと思いましたgetResps()
が、それはドキュメントやコードがそのメソッドで読み取る方法ではありません。ドキュメントとコードには、渡された基準がgetResps()
nullでない場合、常にデータベースから結果が取得されると記載されています。たぶん他のPropelキャッシュ?