在dql中的orderby子句中应用聚合函数


apply aggregate function in orderby clause in dql

  • 我有一个像这样的选择dql查询-

    $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);
    
  • 现在我想按order by子句应用max(created)(在我的查询中为?)。我该怎么做。

您可以使用->addSelect('max(created) AS HIDDEN max_created'),然后通过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();