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 originalpublic function indexAction()
{
$lastestBlogs = $this->getDoctrine()
->getEntityManager()
->getRepository('BlogRepository')
->getLatestBlogs($this->get('request')->query->get('page', 1));
return $this->render('BloggerBlogBundle:Page:index.html.twig', array( 'blogs' => $latestBlogs
));
}
Repository
Código PHP:
Ver originalpublic function getLatestBlogs($page = 1, $limitPerPage = 10)
{
$dql = $em->createQuery('SELECT b, c FROM BloggerBlogBundle:Blog b LEFT JOIN b.comments c');
...
$count = Paginate::getTotalQueryResults($dql); // Step 1
$paginateQuery = Paginate::getPaginateQuery($qb, $offest, $limitPerPage);
return $paginateQuery->getResult();
}
Te dejo una referencia a un bundle que te puede interesar
http://0hlsson.se/2011/09/13/paginat...ginatorbundle/
Saludos.