You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Doctrine 2双字段GROUP BY查询返回结果不正确问题求助

问题修复方案

核心问题点

  • 参数绑定错误:你代码中给states参数赋值时使用了array($states),如果$states本身就是存储待查询状态的一维数组,这会将其封装为二维数组,导致IN条件无法正确匹配所有指定状态,最终只会返回匹配到的第一个状态的统计结果,也就出现了每个用户仅返回一条记录的问题。
  • 缺少排序逻辑:你需要按任务类型/状态排序的话,要显式调用orderBy方法指定排序规则。

修正后的代码

$this->createQueryBuilder('t')
      ->select('t.assignee, COUNT(t.id) as count, t.state')
      ->join('t.assignee', 'user')
      ->andWhere('t.state IN (:states)')
      ->setParameter('states', $states) // 去掉多余的array包裹,直接传入状态数组
      ->addGroupBy('t.assignee')
      ->addGroupBy('t.state')
      ->orderBy('t.assignee') // 优先按任务负责人排序
      ->addOrderBy('t.state') // 其次按任务状态排序,可替换为你需要的任务类型字段
      ->getQuery()
      ->getResult();

补充说明

如果你需要返回负责人的可读信息(比如用户名、用户ID),可以把select部分调整为select('user.id as user_id, user.username as assignee_name, COUNT(t.id) as count, t.state'),返回结果的可读性会更高。

内容的提问来源于stack exchange,提问作者Ruben Lech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:36:06