Doctrine2 Paginator,getArrayResult

okd*_*wit 2 pagination symfony doctrine-orm

我正在处理一个相当复杂的查询构建器(在存储库函数中),它使用很多东西partial c.{id,name,created}和一堆fetchjoins来尝试保持数据量和查询量.

但这还不够,但无论如何前端表示都是分页的,所以我想在需要时进行一些ajax调用来获取数据.

$qb = $this->createQueryBuilder('c')
  ->select('a whole bunch')
  ->join('many joins')
  ->setFirstResult(0)
  ->setMaxResults(10)
Run Code Online (Sandbox Code Playgroud)

上面的方法不适用于复杂的连接,我做了setMaxResults(10)2个结果,setMaxResults(1000)得到118个结果.Doctrine建议使用他们的Pagination类,因为它将正确处理计数/迭代.

现在,如果我遍历由提供的Iterator对象new Paginator($query, true),那么一切正常,但调用存储库函数的代码期望从中获取一个数组getArrayResult.

迭代器包含完整的实体对象,这意味着我必须重写所有服务以使用方法而不是数组键.

有没有办法将Paginator与ArrayResult一起使用?

Paw*_*zuk 7

添加Hydration Mode到您的查询.

//Set query hydration mode
$query->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_ARRAY);
Run Code Online (Sandbox Code Playgroud)