2012-04-11 3 views
6

Beginnend mit Version 2.2 Doctrine hat Paginator. Es ist nur ein Beispiel in der Dokumentation: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"; 
} 

Es gibt nichts in dieser Klasse ist neu, da der gesamte Prozess in der Dokumentation beschrieben ist, kann mit $query->getResult() erfolgen.

Ich weiß, dass es einige Bundles über Paginierung gibt, aber ich möchte keine Pakete von Drittanbietern für solche trivialen Probleme installieren. Auf der anderen Seite kann ich nichts über die Paginierung der Lehre finden2. Es sollte einige nützliche Methoden der Klasse geben. Wo kann ich sie finden? Wenn nicht, worauf zielt die ganze Klasse ab?

Antwort

3

Doctrines Paginator ist nicht Symfony-bewusst - es ist low-level und Doctrine-spezifisch.

Auf der anderen Seite, wenn Sie a 3rd party bundle installieren, werden Sie Paginierung Adapter für Lehre ORM & ODM, Propel, ebene Arrays etc. Sie werden auch Symfony Integration und View Helfer bekommen bekommen. Mindestens WhiteOctoberPagerfantaBundle, die ich benutze all diese.

Also, es sei denn, Sie gehen nur mit Doctrine, ich schlage vor, Sie überdenken Ihre Position über ein 3rd Party Bundle.

+4

Dies beantwortet die Frage nicht, da für das vorliegende Problem nichts Symfony-spezifisch ist. Es wäre besser, eine reine Doktrinlösung zu haben. Ich habe genau das gleiche Problem und frage mich auch, worauf es in der Paginator-Klasse ankommt. –

+0

AFAICT, die Paginator-Klasse existiert nur, um das Problem zu lösen, das auftritt, wenn setMaxResults für eine JOINed DQL-Abfrage verwendet wird. Schläge von schlechtem Design zu mir, aber anscheinend was weiß ich. >. < –