Doctrine query building select MAX Doctrine query building select MAX symfony symfony

Doctrine query building select MAX


Here is a final working query

    $query = $this->createQueryBuilder('s');    $query->select('s, MAX(s.score) AS max_score');    $query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);    $query->groupBy('s.user');    $query->setMaxResults($limit);    $query->orderBy('max_score', 'DESC');    return $query->getQuery()->getResult();


It's too late, but I write this for the records.

You can use "as HIDDEN" in SELECT statements to remove a field of the final result, this way you can use it for ordering or grouping without modifying result fields.

In your example:

$query = $this->createQueryBuilder('s');$query->select('s, MAX(s.score) AS HIDDEN max_score');$query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);$query->groupBy('s.user');$query->setMaxResults($limit);$query->orderBy('max_score', 'DESC');