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

Doctrine QueryBuilder使用innerJoin时仅存项目所有者返回null原因求解

问题原因

你遇到的问题是内连接的特性导致的,具体原因如下:

  • 查询中使用了innerJoin关联项目贡献者实体:内连接只会保留两张表中满足关联匹配条件的行,若某个项目没有关联任何贡献者实体,该项目会在连接执行阶段就被直接从结果集中过滤,后续的where条件不会对这部分已过滤的项目生效,自然也无法匹配到仅设置了所有者的项目。
修复方案

将内连接innerJoin替换为左连接leftJoin即可,左连接会完整保留左表(项目表p)的所有行,即便右表(项目贡献者表)没有匹配的关联数据也不会过滤主表的项目,后续的所有者匹配条件可以正常作用于所有项目:

return $this->createQueryBuilder('p')
            ->leftJoin('p.project_contributors', 'pc')
            ->where('p.project_owner = :val')
            ->orWhere('pc.id = :val')
            ->setParameter('val', $value)
            ->getQuery()
            ->getResult()
;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:15:03