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

Doctrine Query Builder实现三表关联查询type为success的Posts记录

正确实现代码

如果你是在PostsRepository中编写查询,直接通过已定义的关联属性做关联即可,Doctrine会自动处理外键映射,不需要手动拼接关联条件:

<?php

use App\Entity\Types;

// 写在PostsRepository的方法内部
return $this->createQueryBuilder('p')
    ->join('p.accountTokenId', 'at')
    ->join('at.type', 't')
    ->where('t.status = :successStatus')
    ->setParameter('successStatus', Types::STATUS_SUCCESS)
    ->getQuery()
    ->getResult();

原有代码的问题说明

  • 关联的第二层实体类名错误:你定义的AccountToken关联的是Types实体,不是ChannelType
  • 参数和查询条件不匹配:定义了successStatus参数但没有对应的where条件,多余写了不需要的p.accountTokenId筛选条件
  • 不需要手动写全类名加关联条件:已经在实体注解中定义了关联关系,直接通过属性名关联即可,代码更简洁不易出错

如果需要额外增加指定accountTokenId的筛选,补充以下代码即可:

->andWhere('at.uuid = :targetUuid')
->setParameter('targetUuid', 你要筛选的UUID字符串)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 00:45:03