【发布时间】:2017-03-22 23:37:03
【问题描述】:
我正在处理一个相当复杂的查询构建器(在存储库函数中),它使用了很多东西,例如 partial c.{id,name,created} 和一堆 fetchjoins 来尝试保持数据量和查询量下降.
但这还不够,但前端表示无论如何都是分页的,所以我想在需要时进行一些 ajax 调用来获取数据。
$qb = $this->createQueryBuilder('c')
->select('a whole bunch')
->join('many joins')
->setFirstResult(0)
->setMaxResults(10)
上面的方法doesn't work for complex joins,我做setMaxResults(10)得到2个结果,setMaxResults(1000)得到118个结果。 Doctrine 建议使用他们的 Pagination 类,因为它会正确处理计数/迭代。
现在,如果我遍历 new Paginator($query, true) 提供的 Iterator 对象,一切正常,但调用存储库函数的代码期望从 getArrayResult 获取一个数组。
迭代器包含完整的实体对象,这意味着我必须重写所有服务以使用方法而不是数组键。
有没有办法将分页器与 ArrayResult 一起使用?
【问题讨论】:
标签: symfony doctrine-orm pagination