1
Propel ORM(1.6.5)を使用して、テーブル "A"をテーブル "B"にjoinWith()した後、結果PropelObjectCollectionでtoArray()を呼び出すと、各AレコードのBは、Aのすべてのレコードを再度含んでいます(以下のダンプを参照)。Propelの左結合で問題が発生するORM
AがBにLEFTて、joindは正確に一つのB.コード内にポイントの各レコードである私が使用しています:
$oAQuery = AQuery::create()
->joinB('b', Criteria::LEFT_JOIN)
->useBQuery()
->_if(strlen($sB))
->filterByBField1(str_replace(' ', '%', $sCity))
->_endif()
->endUse()
->with('b');
$oCollection = $oAQuery->find();
$aArray = $oAQuery->toArray();
のtoArray()をダンプ:
Array
(
[0] => Array
(
[Field1] => 29
[Field2] => 0
[B] => Array
(
[BField1] => 7
[BField2] => 10
[As] => Array
(
[A_0] => *RECURSION*
[A_1] => Array
(
[Field1] = 234
[Field2] = 3424
...
は私が停止したいですこれは、主に多くのレコードがあり、再帰で私は簡単に512mのmemory_limitをPHPに渡します(私はテストのために2048mさえ行ったが、まだ行きました)