gpt4 book ai didi

php - 如何使用 Doctrine@ ORM 在一个 DQL 查询中进行多次计数?

转载 作者:搜寻专家 更新时间:2023-10-31 20:41:53 24 4
gpt4 key购买 nike

我正在尝试使用 Doctrine2 ORM 在一个 DQL 查询中进行多次计数。

这是我的查询:

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery('

SELECT COUNT(u.id) AS users,
COUNT(t.id) AS teams,
COUNT(p.id) AS posts,
COUNT(c.id) AS comments
FROM ProjectUserBundle:User u,
ProjectTeamBundle:Team t,
ProjectPostBundle:Post p,
ProjectCommentBundle:Comment c,
');
$counts = $query->getSingleResult();

它返回以下结果:{“用户”:“2648940”,“团队”:“2648940”,“帖子”:“2648940”,“评论”:“2648940”

它必须是这样的:{“用户”:“17”,“团队”:“5”,“帖子”:“190”,“评论”:“321”

谁能告诉我哪里做错了?

最佳答案

对于您的查询,DQL 混合表而不是计算每个表中的行数。结果是错误的行数。它无法解释原因和方式,但当我在查询中使用多个 COUNT() 函数时它总是失败。

要计算正确的行数,您必须使用子查询:

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery('

SELECT COUNT(U.id) AS users,
(SELECT COUNT(T) FROM ProjectUserBundle:Team T) AS teams,
(SELECT COUNT(P) FROM ProjectUserBundle:Post P) AS posts,
(SELECT COUNT(C) FROM ProjectUserBundle:Comment C) AS comments
FROM ProjectUserBundle:User U
');

$counts = $query->getSingleResult();

关于php - 如何使用 Doctrine@ ORM 在一个 DQL 查询中进行多次计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210335/

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