如何使用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.
;
当我执行代码时,出现错误:
Doctrine\ORM\Query\QueryException : [Semantical Error] line 0, col 293 near 'maxPerformanceDate': Error: 'maxPerformanceDate' does not point to a Class.
我已经使用MySQL手动尝试了它,它可以工作。任何变通方法都表示赞赏。首选项不是必须下载到使用本机SQL。
完整的表定义可以在我的另一个问题中找到:
SQL SELECT data between two related tables NOT within a certain date range
答案 0 :(得分:1)
这是Doctrine2中的一个错误。它已在最新的dev学科中修复,但在2.5之前不会发布。