计算Doctrine的iterate()收集结果

Dan*_* W. 6 php doctrine doctrine-orm

拥有QueryBuilder结果

$query = $em->createQuery("SELECT....");
Run Code Online (Sandbox Code Playgroud)

通过iterate()方法获取它们

http://doctrine-orm.readthedocs.org/en/2.0.x/reference/batch-processing.html

$objects = $query->iterate();
Run Code Online (Sandbox Code Playgroud)

我现在能够

foreach ($objects as $object) {
    $object = $object[0];
    //do something..
    $object->getObjectId();
    ...
}
Run Code Online (Sandbox Code Playgroud)

但...

//after the iterate() call, before to foreach
echo sizeof($objects); //or count($objects);
//always "1", even if i have 10000 foreach loops
Run Code Online (Sandbox Code Playgroud)

为什么以及如何修复?

Ocr*_*ius 15

$query->iterate()只会给你一个不可数的迭代器.考虑编写第二个查询,COUNT(result)为您完成,或使用分页器