【发布时间】:2014-05-13 07:20:14
【问题描述】:
我正在做一个 Symfony2 项目,我决定使用 KNPPaginatorBundle 来构建一个简单的分页系统。所以我创建了一个 Product 实体,我想将分页器添加到 indexAction 操作(由 CRUD 命令生成)。
// Retrieving products.
$em = $this->getDoctrine()->getManager();
//$entities = $em->getRepository('LiveDataShopBundle:Product')->findAll();
$dql = "SELECT a FROM LiveDataShopBundle:Product a";
$entities = $em->createQuery($dql);
// Creating pagnination
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$entities,
$this->get('request')->query->get('page', 1),
20
);
它工作正常,但我想使用产品的存储库而不是直接在控制器中创建查询。我怎样才能做到这一点 ? 实际上,直接将结果集合添加到分页对象中太慢了,因为它会加载所有产品然后对 ArrayCollection 进行分页。
提前致谢。
K4
【问题讨论】:
-
我也注意到了这个性能问题。问题是这个包需要整个数组集合来生成分页。如果您提供部分结果,则分页将有错误的页数,因为它是从整个集合中计算出来的
标签: php symfony pagination knppaginator knppaginatorbundle