如何使用 Doctrine2 QueryBuilder 执行以下操作?
$qb->select('o, MAX(r.performanceDate) AS HIDDEN maxPerformanceDate')->
from("Officer",'o')->
leftJoin("o.reports",'r',Join::ON,'')->
// andWhere('r.performanceDate is NULL OR maxPerformanceDate < :date OR maxPerformanceDate > :currentMonthDate')-> // does not work either, can't "WHERE" an aggregate function
having('maxPerformanceDate < :date OR maxPerformanceDate > :currentMonthDate')->
orHaving('maxPerformanceDate is null')-> // error here
addOrderBy('r.performanceDate','ASC')->
addOrderBy('o.name','ASC')->
groupBy("o.id")
// .. setParamters, etc.
;
当我执行代码时,我收到一个错误:
DoctrineORMQueryQueryException : [Semantical Error] line 0, col 293 near 'maxPerformanceDate': Error: 'maxPerformanceDate' does not point to a Class.
我已经用MySQL手动尝试过这个,它可以工作。任何解决方法都值得赞赏。首选是不必下拉到使用本机 SQL。
完整的表定义可以在我的另一个问题中找到:
两个相关表之间的 SQL SELECT 数据不在特定日期范围内
这是
Doctrine2中的一个错误。它已在最新的 dev 分支中修复,但要到 2.5 才会发布。
http://www.doctrine-project.org/jira/browse/DDC-1858