我想执行一个查询,在本机SQL中如下所示:
SELECT
AVG(t.column) AS average_value
FROM
table t
WHERE
YEAR(t.timestamp) = 2013 AND
MONTH(t.timestamp) = 09 AND
DAY(t.timestamp) = 16 AND
t.somethingelse LIKE 'somethingelse'
GROUP BY
t.somethingelse;如果我试图在Doctrine的查询生成器中实现这一点,如下所示:
$qb = $this->getDoctrine()->createQueryBuilder();
$qb->select('e.column AS average_value')
->from('MyBundle:MyEntity', 'e')
->where('YEAR(e.timestamp) = 2013')
->andWhere('MONTH(e.timestamp) = 09')
->andWhere('DAY(e.timestamp) = 16')
->andWhere('u.somethingelse LIKE somethingelse')
->groupBy('somethingelse');我得到错误异常
语法错误行0,col 63:错误:预期的已知函数,得到“年份”
如何使用理论查询生成器实现我的查询?
备注:
YEAR()等语句,例如在这里看到的。但我正在寻找一种方法,以避免包括第三方插件。发布于 2013-10-16 10:09:32
如果您在Symfony上,可以添加学说延伸,这样就可以通过添加此配置来使用MySql、YEAR和MONTH语句:
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year现在,您可以在DQL或querybuilder中使用月和年语句。
注意:扩展支持MySQL、Oracle、PostgreSQL和SQLite。
发布于 2019-06-02 21:38:53
在Symfony 4中,您必须安装DoctrineExtensions
composer require beberlei/DoctrineExtensions然后按照以下方式编辑原则配置文件( config /packages/prinine.yaml):
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year发布于 2015-08-05 13:33:37
口头/学说-扩展似乎也是一个不错的项目。
它同时支持MySQL和PostgreSql。目标是实现交叉DB
https://stackoverflow.com/questions/18826836
复制相似问题