将自定义函数添加到学说查询生成器按子句分组

Posted

技术标签:

【中文标题】将自定义函数添加到学说查询生成器按子句分组【英文标题】:Adding custom function to doctrine query builder group by clause 【发布时间】:2013-01-21 14:38:41 【问题描述】:

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

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

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

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

【问题讨论】:

DQL 和查询生成器是一回事。查询构建器只是组装 DQL。 【参考方案1】:

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

看起来像这样

$qb->select('MONTH(i.instdate) as myMonth'....);
$qb->groupBy('myMonth');

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于将自定义函数添加到学说查询生成器按子句分组的主要内容,如果未能解决你的问题,请参考以下文章

php 将自定义字段(按顺序)添加到电子邮件中

php 将自定义字段(按顺序)添加到电子邮件中

php 将自定义字段(按顺序)添加到电子邮件中

将自定义函数应用于 spark 数据框组

Mysq 分组查询语句以及添加条件的分组查询

将自定义 HTML 属性添加到 Grav 生成表单的按钮