Группа По дням и месяцам Доктрина

Я хотел бы перечислить своих пользователей по дням рождения, поэтому месяц и день, но не год.

У меня есть этот запрос

SELECT * 
FROM user 
WHERE birthDate IS NOT NULL 
GROUP BY MONTH(birthDate), DAY(birthDate)

Но я не знаю, как использовать его с Symfony и Doctrine. Я попробовал

$result = $em->getRepository("AcmeApplicationBundle:SecurityServiceUser")
            ->createQueryBuilder('user')
            ->where('user.birthDate IS NOT NULL')
            ->groupBy('MONTH(user.birthDate), DAY(user.birthDate)')
            ->getQuery()
            ->getResult(); 

и

$result = $em->getRepository("AcmeApplicationBundle:SecurityServiceUser")
            ->createQueryBuilder('user')
            ->where('user.birthDate IS NOT NULL')
            ->groupBy('MONTH(user.birthDate)')
            ->groupBy('DAY(user.birthDate)')
            ->getQuery()
            ->getResult(); 

Но в обоих случаях у меня есть ошибка

[Семантическая ошибка] строка 0, col 165 около 'MONTH (birthDate),': Ошибка: не может группироваться по идентификатору или переменной результата undefined.

Ответ 1

Вы не задали псевдоним для своих значений. Вот обновленная версия:

   $result = $em->getRepository("AcmeApplicationBundle:SecurityServiceUser")
        ->createQueryBuilder('user')
        ->select(' user.username, MONTH(user.birthDate) AS gBmonth, DAY(user.birthDate) AS gBday')
        ->where('user.birthDate IS NOT NULL')
        ->groupBy('gBmonth')
        ->addGroupBy('gBday')
        ->getQuery()
        ->getResult(); 

Это должно работать нормально.