2012-04-11 19 views
6

Comenzando con la versión 2.2 Doctrine tiene Paginator. Sólo hay un ejemplo en la documentación: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"; 
} 

No hay nada nuevo en esta clase ya que todo el proceso descrito en la documentación se puede hacer con $query->getResult().

Sé que hay algunos paquetes acerca de la paginación, pero no quiero instalar paquetes de terceros para problemas tan triviales. Por otro lado, no puedo encontrar nada sobre la paginación de la doctrina2. Debería haber algunos métodos útiles de la clase. ¿Donde puedo encontrarlos? Si no hay, ¿cuál es el objetivo de toda la clase?

Respuesta

3

El paginador de Doctrine no es consciente de Symfony, es de bajo nivel y específico de Doctrine.

Por otro lado, si instala a 3rd party bundle, obtendrá adaptadores de paginación para la Doctrina ORM & ODM, Propel, las matrices de fricción, etc. También obtendrá integración Symfony y ayudantes de vista. Al menos WhiteOctoberPagerfantaBundle que utilizo hace todo esto.

Por lo tanto, a menos que vaya solo con Doctrine, le sugiero que reconsidere su posición acerca de un paquete de terceros.

+4

Esto no responde a la pregunta porque no hay nada específico de Symfony en el problema en cuestión. Sería mejor tener una solución solo de doctrina en su lugar. Estoy teniendo exactamente el mismo problema y me pregunto cuál es el objetivo de la clase Paginator. –

+0

AFAICT, la clase Paginator existe únicamente para resolver el problema que ocurre al intentar usar setMaxResults en una consulta DQL unificada. Golpes de mal diseño para mí, pero aparentemente lo que sé. >. < –

Cuestiones relacionadas