Php 逐日逐月分组原则

Php 逐日逐月分组原则,php,mysql,sql,symfony,doctrine-orm,Php,Mysql,Sql,Symfony,Doctrine Orm,我想列出我的用户的生日,所以月和日,但不是年 我有这个疑问 选择* 来自用户 其中生日不为空 按月份分组出生日期、出生日期 但我不知道如何将它与Symfony和Doctrine结合使用。 我试过了 及 但在这两种情况下,我都有一个错误 [语义错误]第0行第165列“MONTHbirthDate”附近:错误:无法按未定义的标识或结果变量分组 您尚未为值设置别名。以下是更新版本: $result = $em->getRepository("AcmeApplicationBundle:Se

我想列出我的用户的生日,所以月和日,但不是年

我有这个疑问

选择* 来自用户 其中生日不为空 按月份分组出生日期、出生日期 但我不知道如何将它与Symfony和Doctrine结合使用。 我试过了

但在这两种情况下,我都有一个错误

[语义错误]第0行第165列“MONTHbirthDate”附近:错误:无法按未定义的标识或结果变量分组


您尚未为值设置别名。以下是更新版本:

   $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(); 

这应该可以正常工作。

也许这一条有帮助:为什么有这个查询?您安装了吗[扩展名?为什么我必须先选择它,然后才能对ITIL进行分组非常简单,就像在经典的sql查询中一样,您必须首先在select中定义您的别名,以便将其用于group。这会引发此错误,为什么?select list的表达式1不在group BY子句中,并且包含未聚合的列“my_database.o0_0.id”,该列不起作用通常依赖于GROUP BY子句中的列;这与sql_mode=only_full_GROUP_BY不兼容。您还需要安装“composer require beberlei/DoctrineExtensions”')@elvismdev,这些链接可能有助于理解:1..2。
$result = $em->getRepository("AcmeApplicationBundle:SecurityServiceUser")
            ->createQueryBuilder('user')
            ->where('user.birthDate IS NOT NULL')
            ->groupBy('MONTH(user.birthDate)')
            ->groupBy('DAY(user.birthDate)')
            ->getQuery()
            ->getResult(); 
   $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();