Ich arbeite an einem Symfony2-Projekt und entschied mich, mit KNPPaginatorBundle ein einfaches Paginierungssystem zu erstellen. Also habe ich eine Product-Entity erstellt und möchte den Paginator zur indexAction-Aktion hinzufügen (generiert vom CRUD-Befehl).Wie verwende ich KNPPaginatorBundle, um Ergebnisse mit Doctrine Repository paginieren?
// 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
);
Es funktioniert gut, aber ich möchte das Repository des Produkts verwenden, anstatt die Abfrage direkt in der Steuerung zu erstellen. Wie kann ich das machen ? In der Tat, fügen Sie die Auflistung der Ergebnisse direkt zu dem Objekt paginate ist einfach zu langsam, weil alle Produkte laden dann die ArrayCollection paginieren.
Vielen Dank im Voraus.
K4
ich auch dieses Leistungsproblem bemerkt. Das Problem besteht darin, dass dieses Paket die gesamte Array-Sammlung zum Generieren der Seitennummerierung benötigt. Wenn Sie ein unvollständiges Ergebnis angeben, wird die Seitennummerierung falsch sein, da sie aus der gesamten Sammlung berechnet wird. – Chopchop