Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 连接递归在推进ORM中的左连接上有问题_Php_Orm_Propel - Fatal编程技术网

Php 连接递归在推进ORM中的左连接上有问题

Php 连接递归在推进ORM中的左连接上有问题,php,orm,propel,Php,Orm,Propel,在Propel ORM(1.6.5)中,当我使用()将表“a”连接到表“B”,然后在结果PropelObjectCollection上调用toArray()时,每个a记录中的B项再次包含a的所有记录(参见下面的转储) A与B保持连接。A中的每条记录正好指向B中的一条。我使用的代码: $oAQuery = AQuery::create() ->joinB('b', Criteria::LEFT_JOIN) ->useBQuery() ->_if(str

在Propel ORM(1.6.5)中,当我使用()将表“a”连接到表“B”,然后在结果PropelObjectCollection上调用toArray()时,每个a记录中的B项再次包含a的所有记录(参见下面的转储)

A与B保持连接。A中的每条记录正好指向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()转储:


我想停止这一点,主要是因为有很多记录,通过递归,我很容易就超过了512m的PHP内存限制(我甚至做了2048m的测试,但仍然超过了这个限制)

您可以编写自己的格式化程序,这样您就可以决定如何处理结果集:

使用自定义格式化程序需要额外的方法调用:

$aArray = $oAQuery->setFormatter('MyCustomFormatter')->find();
// instead of $aArray = $oAQuery->toArray();
$aArray = $oAQuery->setFormatter('MyCustomFormatter')->find();
// instead of $aArray = $oAQuery->toArray();