0

我想使用学说按日期列的年份和月份对数据进行分组。它目前使用查询生成器来生成除了分组之外工作正常的语句。我已经安装了 Doctrine Extensions 包中的 Month 和 Year 自定义函数,但是,我不能执行以下操作:

$qb->add('groupBy', 'MONTH(i.instdate)');

我收到一个错误:无法按未定义的标识变量消息分组。

查询生成器可以做到这一点吗?如果不能,我可以将 DQL 添加到查询生成器结果中吗?做这个的最好方式是什么?我不想将整个系统更改为 DQL,因为它是从动态表单选项构建的查询,所以这将是一个重大变化。

4

2 回答 2

2

如果可以将自定义函数添加到 select 子句,则可以使用一种解决方法。您可以按 select 子句中的自定义函数结果的别名进行分组。

这看起来像这样

$qb->select('MONTH(i.instdate) as myMonth'....);
$qb->groupBy('myMonth');
于 2019-07-09T20:43:56.657 回答
0

在我使用的 Doctrine 版本中,按功能分组似乎是不可能的。它在以后的版本中可用。

我决定在需要时使用 SQL 语句,因为更改为不同版本的 Doctrine,在 ZF 内部这样接近项目完成会太多。

于 2013-01-31T10:59:05.790 回答