Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/10/2011, 20:25
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: LeftJoin + setMaxResults

Claro que puedes, no es mas que pasar el código que tienes en el controller al repository y luego llamar al repository para obtener la query, aunque me parece mejor devolver directamente los resultados.

Algo asi:

Controller
Código PHP:
Ver original
  1. public function indexAction()
  2. {
  3.     $lastestBlogs = $this->getDoctrine()
  4.                          ->getEntityManager()
  5.                          ->getRepository('BlogRepository')
  6.                          ->getLatestBlogs($this->get('request')->query->get('page', 1));
  7.  
  8.     return $this->render('BloggerBlogBundle:Page:index.html.twig', array(
  9.             'blogs' => $latestBlogs
  10.         ));
  11. }

Repository
Código PHP:
Ver original
  1. public function getLatestBlogs($page = 1, $limitPerPage = 10)
  2. {
  3.     $dql = $em->createQuery('SELECT b, c FROM BloggerBlogBundle:Blog b LEFT JOIN b.comments c');
  4.     ...
  5.     $count = Paginate::getTotalQueryResults($dql); // Step 1
  6.     $paginateQuery = Paginate::getPaginateQuery($qb, $offest, $limitPerPage);
  7.  
  8.     return $paginateQuery->getResult();
  9. }

Te dejo una referencia a un bundle que te puede interesar http://0hlsson.se/2011/09/13/paginat...ginatorbundle/

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)