Got*_*bel 29 mysql sql sql-date-functions doctrine-orm
我想在本机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;
Run Code Online (Sandbox Code Playgroud)
如果我试图在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');
Run Code Online (Sandbox Code Playgroud)
我得到错误异常
[语法错误]第0行,第63行:错误:预期的已知函数,得到'年'
如何使用Doctrines查询构建器实现我的查询?
笔记:
YEAR()
等语句,例如,如此处所示.但我正在寻找避免包含第三方插件的方法.ale*_*x88 39
您可以添加Doctrine扩展,以便在Symfony上添加此配置时可以使用MySql YEAR
和MONTH
语句:
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
Run Code Online (Sandbox Code Playgroud)
现在您可以在DQL或querybuilder中使用MONTH和YEAR语句.
小智 5
In Symfony 4 you must install DoctrineExtensions:
composer require beberlei/DoctrineExtensions
Run Code Online (Sandbox Code Playgroud)
And then edit the doctrine config file (config/packages/doctrine.yaml) as follow:
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29775 次 |
最近记录: |