ユーザーを誕生日別にリストしたいので、年ではなく月と日です。
私はこのクエリを持っています
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、列165'MONTH(birthDate) 'の近く:エラー:未定義のIDまたは結果変数でグループ化できません。
値のエイリアスを設定していません。これが更新されたバージョンです:
$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();
これは正常に機能するはずです。