2012-08-16 91 views
3

我的查询用的QueryBuilder 10个最后结果:的QueryBuilder Symfony2中,在ASC

<?php $qb = $this->createQueryBuilder('m') 
        ->join('m.sender', 's') 
        ->join('m.target', 't') 
           ->addSelect('s') 
        ->addSelect('t') 
        ->where('(m.sender = '.$Myid.'OR m.target = '.$Myid.')') 
        ->andWhere('m.grouper ='.$groupe) 
        ->orderBy('m.created_date', 'ASC') 
        ->setMaxResults('10'); 

        return $qb->getQuery() 
        ->getResult(); 

如何显示在过去10个结果中ASC? 谢谢

回答

6

从学说的文档:

15.2.3。限制结果

要限制结果,查询生成器与查询对象有一些相同的方法,可以从EntityManager#createQuery()检索到该查询对象。

<?php 
    // $qb instanceof QueryBuilder 
    $offset = (int)$_GET['offset']; 
    $limit = (int)$_GET['limit']; 

    $qb->add('select', 'u') 
     ->add('from', 'User u') 
     ->add('orderBy', 'u.name ASC') 
     ->setFirstResult($offset) 
     ->setMaxResults($limit); 

正如你所看到的,你必须使用setFirstResult()setMaxResults()


,我建议你看看章处理有关的QueryBuilder以避免你的丑参数级联 ...

+0

我已经array_reverse使用,它更简单的解决方案。 – 2012-08-16 15:16:54