相关疑难解决方法(0)

如何在Doctrine2中使用SQL的YEAR(),MONTH()和DAY()?

我想在本机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查询构建器实现我的查询?

笔记:

  • 我知道Doctrine的Native SQL.我试过这个,但它导致了我的高效和我的开发数据库表有不同名称的问题.我想工作数据库不可知,所以这是没有选择.
  • 虽然我想工作db不可知:FYI,我正在使用MySQL.
  • 有办法将Doctrine扩展到"学习" YEAR()等语句,例如,如此处所示.但我正在寻找避免包含第三方插件的方法.

mysql sql sql-date-functions doctrine-orm

29
推荐指数
2
解决办法
3万
查看次数

标签 统计

doctrine-orm ×1

mysql ×1

sql ×1

sql-date-functions ×1