Sto lavorando a un progetto Symfony2 e ho deciso di utilizzare KNPPaginatorBundle per creare un sistema di impaginazione facile. Così ho creato un'entità prodotto e voglio aggiungere l'impaginatore all'azione indexAction (generata dal comando CRUD).Come utilizzare KNPPaginatorBundle per impaginare i risultati utilizzando 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
);
Funziona bene ma voglio usare repository del prodotto invece di creare la query direttamente nel controller. Come lo posso fare ? Infatti, aggiungere direttamente la raccolta dei risultati all'oggetto paginato è troppo lento perché carica tutti i prodotti quindi impagina ArrayCollection.
Grazie in anticipo.
K4
Ho anche notato questo problema di prestazioni. Il problema è che questo bundle ha bisogno dell'intera collezione di array per generare l'impaginazione. Se fornisci un risultato parziale, la paginazione avrà un numero errato di pagine poiché viene calcolata dall'intera collezione – Chopchop