gpt4 book ai didi

php - Doctrine QueryBuilder HAVING 表达式

转载 作者:行者123 更新时间:2023-11-29 11:35:56 26 4
gpt4 key购买 nike

好的,所以我正在使用 Doctrine ORM (2.5) 重写一些代码。

旧代码创建一个具有如下内容的查询:

SELECT * FROM couples INNER JOIN individuals ON (couples.id = individuals.couple_id)
GROUP BY couples.id
HAVING SUM(individuals.date_of_birth <= '1976-01-01') > 0

我不知道如何使用 Doctrine QueryBuilder 来最好地实现这一点。这是一个非常简化的示例,真正的查询要长得多,并且有一些 HAVING 子句,所有这些子句都使用 SUM(some_condition) > 0 来确保只检索包含匹配的 individual 的 Couples .

我可以使用 $queryBuilder->having() 在 Doctrine 中添加having 子句,但我无法使用 SUM() 函数来执行此操作。有什么想法吗?

最佳答案

实际上,没有什么可以阻止您将 sumhaving 一起使用:

$queryBuilder
->select('couple, individual')
...
->having('sum(individual.date_of_birth) > 0');

查询生成器的 sum() 函数实际上接受两个参数并返回一个数学表达式,这不是您想要的。

当您在字段上使用 sum 时(如上例所示),这实际上是聚合函数。

在您的案例中要记住的另一件事是,根据 documentation ,每个 having() 调用都会覆盖所有先前设置的having条件。因此,如果您想使用其中的多个,请使用 andHavingorHaving

我希望这能解释它。

关于php - Doctrine QueryBuilder HAVING 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com