2012-04-13 119 views
1

使用Propel ORM(1.6.5)時,當我將join()與表「A」連接到表「B」,然後在結果PropelObjectCollection上調用toArray()時,條目對於每個A記錄中的B包含A的所有記錄(請參見下面的dump)。在Propel ORM的左連接中加入遞歸問題

上殘留JOINd到B的每條記錄在一個點中只有一個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(); 

指定者()轉儲:

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 
            ... 

我想停止這主要是因爲有很多記錄和遞歸我很容易超過PHP的512m memory_limit(我甚至做了2048m的測試,仍然超過了)

回答