setfirstresult left inner doctrine2

doctrine2 - left - Establecer LIMIT con la doctrina 2?



limit doctrine symfony (5)

Su setMaxResults ($ limit) debe establecerse en el objeto.

p.ej

$query_ids = $this->getEntityManager() ->createQuery( "SELECT e_.id FROM MuzichCoreBundle:Element e_ WHERE [...] GROUP BY e_.id") ; $query_ids->setMaxResults($limit);

Intento escribir una consulta (con subconsulta) pero no sé cómo establecer un límite en mi subconsulta. Mi consulta:

$query_ids = $this->getEntityManager() ->createQuery( "SELECT e_.id FROM MuzichCoreBundle:Element e_ WHERE [...] GROUP BY e_.id") ->setMaxResults(5) ; $query_select = "SELECT e FROM MuzichCoreBundle:Element e WHERE e.id IN (".$query_ids->getDql().") ORDER BY e.created DESC, e.name DESC" ; $query = $this->getEntityManager() ->createQuery($query_select) ->setParameters($params) ;

Pero -> setMaxResults (5) no funciona. No ''LIMIT'' en la consulta SQL. ¿Podemos hacer LÍMITE simple con la doctrina 2?


Yo uso Doctrine/ORM/Tools/Pagination/Paginator para esto, y funciona perfectamente (doctrina 2.2).

$dql = "SELECT p, c FROM BlogPost p JOIN p.comments c"; $query = $entityManager->createQuery($dql) ->setFirstResult(0) ->setMaxResults(10); $paginator = new Paginator($query, $fetchJoinCollection = true);


$qb = $this->getDoctrine()->getManager()->createQueryBuilder(); $qb->select(''p'') ->from(''Pandora/UserBundle/Entity/PhoneNumber'', ''p''); $qb->where(''p.number = :number''); $qb->OrWhere(''p.validatedNumber=:number''); $qb->setMaxResults(1); $qb->setParameter(''number'',$postParams[''From''] ); $result = $qb->getQuery()->getResult(); $data=$result[0];


$limit=5; // for exemple $query = $this->getDoctrine()->getEntityManager()->createQuery( ''// your request'') ->setMaxResults($limit); $results = $query->getResult(); // Done


$query_ids = $this->getEntityManager() ->createQuery( "SELECT e_.id FROM MuzichCoreBundle:Element e_ WHERE [...] GROUP BY e_.id") ->setMaxResults(5) ->setMaxResults($limit) ;

AQUÍ en la segunda consulta se debe pasar el resultado de la primera consulta.

$query_select = "SELECT e FROM MuzichCoreBundle:Element e WHERE e.id IN (".$query_ids->getResult().") ORDER BY e.created DESC, e.name DESC" ; $query = $this->getEntityManager() ->createQuery($query_select) ->setParameters($params) ->setMaxResults($limit); ; $resultCollection = $query->getResult();