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();