doctrine query builder Получить одновременно сумму и количество SUM(), COUNT()

Задача

Получить 2 результата с помощью одного запроса к БД: например, и сумму, и количество объектов.

Решение

  1. В запросе необходимые поля/расчитываемые значения указываем через запятую и присваиваем им псевдонимы:
     $this->getEntityManager()
            ->createQueryBuilder()
            ->select('SUM(r.sum) as sum, COUNT(r) as count')
            ->from(Rejection::class, 'r')
            ->getQuery()
            ->getOneOrNullResult();
  2. В итоге получаем массив, индексами которого являются те самые псевдонимы:
    $rejectionCountAndSum = $rejectionRepository->getCountAndSumOfRejections();
            
            $rejectionCount = $rejectionCountAndSum['count'];
            $rejectionSum = $rejectionCountAndSum['sum'];

Источники