设置LIMIT与教义2?

我试图写一个查询(与子查询),但我不知道如何在我的子查询设置限制。 我的查询:

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

但是– > setMaxResults(5)不起作用。 SQL查询中没有“LIMIT”。 我们可以做简单的LIMIT与教条2?

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

在第二个查询中的HERE应该通过第一个查询的结果。

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

我使用Doctrine\ORM\Tools\Pagination\Paginator来完成这个任务,并且它完美的工作(原则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); 

您的setMaxResults($ limit)需要在对象上设置。

例如

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