简体   繁体   中英

apply aggregate function in orderby clause in dql

  • i have a select dql query like this-

     $i=0; $max_result=50; $qb=$this->em->createQueryBuilder(); $from='Entities\\EventVisitor evtvstr'; $qb->select('evtvstr.user, evtvstr.metadata, u.id') ->add('from', $from) ->groupBy('evtvstr.user') ->orderBy('?') ->setFirstResult($i) ->setMaxResults($max_result) ->distinct(); $query = $qb->getQuery(); $query->getSQl(); $results = $query->getResult(); print_r($results); 
  • now i want to apply max(created) (at ? in my query) in order by clause. how can i do it.

You can use ->addSelect('max(created) AS HIDDEN max_created') and then order by max_created

$qb=$this->em->createQueryBuilder();
$from='Entities\EventVisitor evtvstr';
$qb->select('evtvstr.user, evtvstr.metadata, u.id')
->addSelect('max(created) AS HIDDEN max_created')
->add('from', $from)
->groupBy('evtvstr.user')
->orderBy('max_created')
->setFirstResult($i)
->setMaxResults($max_result)
->distinct();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM