Począwszy od wersji 2.2 Doctrine ma Paginator. Jest tylko jeden przykład w dokumentacji:Doctrine2 Paginator
<?php
use Doctrine\ORM\Tools\Pagination\Paginator;
$dql = "SELECT p, c FROM BlogPost p JOIN p.comments c";
$query = $entityManager->createQuery($dql)
->setFirstResult(0)
->setMaxResults(100);
$paginator = new Paginator($query, $fetchJoin = true);
$c = count($paginator);
foreach ($paginator as $post) {
echo $post->getHeadline() . "\n";
}
Nie ma nic nowego w tej klasie, ponieważ cały proces opisany w dokumentacji można zrobić z $query->getResult()
.
Wiem, że istnieje kilka pakietów dotyczących stronicowania, ale nie chcę instalować pakietów innych firm w tak banalnych kwestiach. Z drugiej strony nie mogę znaleźć nic na temat stronicowania doktryny2. Powinny być jakieś użyteczne metody klasy. Gdzie mogę je znaleźć? Jeśli nie, to jaki jest sens całej klasy?
Nie odpowiada to na pytanie, ponieważ w problemie nie ma nic specyficznego dla Symfony. Lepiej byłoby zamiast tego mieć rozwiązanie oparte tylko na doktrynie. Mam dokładnie ten sam problem i zastanawiam się, jaki jest sens klasy Paginator. –
AFAICT, klasa Paginator istnieje wyłącznie w celu rozwiązania problemu, który występuje podczas próby użycia setMaxResults w zapytaniu JOINed DQL. Trąbiły mnie kiepskie projekty, ale najwidoczniej to, co wiem. >. < –