Группа По дням и месяцам Доктрина
Я хотел бы перечислить своих пользователей по дням рождения, поэтому месяц и день, но не год.
У меня есть этот запрос
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();
Это должно работать нормально.