gpt4 book ai didi

php - 如何使用 KNPPaginatorBundle 对使用 Doctrine Repository 的结果进行分页?

转载 作者:可可西里 更新时间:2023-10-31 22:42:31 24 4
gpt4 key购买 nike

我正在做一个 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
);

它工作正常,但我想使用产品的存储库而不是直接在 Controller 中创建查询。我怎样才能做到这一点 ?事实上,直接将结果集合添加到分页对象太慢了,因为它加载所有产品然后对 ArrayCollection 进行分页。

提前致谢。

K4

最佳答案

我建议在您的 ProductRepository 中使用 QueryBuilder,然后将其传递给分页器:

ProductRepository extends EntityRepository
{
// This will return a QueryBuilder instance
public function findAll()
{
return $this->createQueryBuilder("p");
}
}

在 Controller 中:

$products = $productRepository->findAll();

// Creating pagnination
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$products,
$this->get('request')->query->get('page', 1),
20
);

关于php - 如何使用 KNPPaginatorBundle 对使用 Doctrine Repository 的结果进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22804158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com