【问题标题】:Doctrine2 Paginator, getArrayResultDoctrine2 分页器,getArrayResult
【发布时间】: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


    【解决方案1】:

    Hydration Mode 添加到您的查询中。

    //Set query hydration mode
    $query->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_ARRAY);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2012-05-28
      • 2016-03-20
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多