Symfony2 프로젝트에서 작업 중이며 KNPPaginatorBundle을 사용하여 쉬운 페이지 매김 시스템을 구축하기로 결정했습니다. 그래서 Product 엔티티를 만들었고 (CRUD 명령으로 생성 된) indexAction 액션에 paginator를 추가하려고합니다.KNPPaginatorBundle을 사용하여 Doctrine Repository를 사용하여 결과를 페이지 매김하는 방법?
// 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
내가이 성능 문제를 발견. 문제는이 묶음이 페이지 배열을 생성하기 위해 전체 배열 컬렉션을 필요로한다는 것입니다. 부분 결과를 제공하면 페이지 번호가 전체 컬렉션에서 계산되기 때문에 페이지 번호가 잘못됩니다. – Chopchop