代码之家  ›  专栏  ›  技术社区  ›  Trung Vu

条令-按日期分组

  •  3
  • Trung Vu  · 技术社区  · 7 年前

    我有这个问题:

    SELECT DATE_FORMAT(exp_date, "%Y-%m") AS Month, sum(exp_total) FROM export
    GROUP BY DATE_FORMAT(exp_date, "%Y-%m");
    

    我试图将其转化为Symfony学说,如下所示:

    $qb = $this
      ->createQueryBuilder('e')
      ->select('DATE_FORMAT(e.expDate, \'%Y-%m\'), sum(e.expTotal) total')
      ->groupBy('DATE_FORMAT(e.expDate, \'%Y-%m\')');
    return $qb->getQuery()->getResult();
    

    使用:

    "beberlei/DoctrineExtensions": "^1.0"
    

    错误:[语义错误]第0行,第103列附近 'DATE\u FORMAT(e.expDate),':错误:无法按未定义分组 标识或结果变量。

    1 回复  |  直到 6 年前
        1
  •  8
  •   M Khalid Junaid    7 年前

    我假设您已经配置了上述捆绑包,并添加了所需的 configuration 喜欢

    doctrine:
        orm:
            dql:
                datetime_functions:
                    date_format: DoctrineExtensions\Query\Mysql\DateFormat
    

    现在,在查询中,您可以将别名指定为 dateAsMonth 至的结果 DATE_FORMAT 表达式和in group by可以使用此别名

    return $qb =   $this->createQueryBuilder('e')
                        ->select('DATE_FORMAT(e.expDate, \'%Y-%m\') as dateAsMonth, sum(e.expTotal) total')
                        ->groupBy('dateAsMonth')
                        ->getQuery()
                        ->getResult();