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
相关产品推荐
相关产品推荐

