php - 教义——三表关系
问题描述
我在编写 Doctrine Query Builder 时遇到了麻烦。
我有一个与AccountToken表相关的Posts表,例如:
class Posts
/**
* @ORM\ManyToOne(targetEntity="App\Entity\AccountToken")
* @ORM\JoinColumn(name="account_token_id", referencedColumnName="uuid", nullable=false)
*/
protected $accountTokenId;
我正在编写一个查询构建器,我想通过UUID提取与该表相关并具有特定状态的所有结果。类型值在AccountToken表中定义。
在该表中,类型也有关系,它在AccountToken表中定义:
class AccountToken
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Types")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=false)
*/
protected $type;
这对我来说是一个棘手的问题,因为我必须处理关系。
有人知道如何提取结果:
“将具有type='success'值的帖子返回给我”。
$this->createQueryBuilder('p')
->select('p')
->join('App\Entity\AccountToken', 'at', Expr\Join::WITH, 'at.uuid = p.accountTokenId')
->join('App\Entity\ChannelType', 'ct', Expr\Join::WITH, 'ct.id = at.type')
->where('p.accountTokenId = :accountTokenId')
->setParameter('successStatus', Types::STATUS_SUCCESS)
->getQuery()
->getResult();
这是我如何尝试完成它的草稿,但是由于我是 Doctrine 的新手,所以不知道如何加入在其相关表中具有价值的表。这很令人困惑。
解决方案
首先,您的查询中没有任何参数successStatus
。
我认为你把事情复杂化了。
return $this->createQueryBuilder('p')
->leftJoin('p.accountToken', 'a')
->leftJoin('a.type', 'ct')
->where('ct.successStatus = :successStatus')
->setParameter('successStatus', Types::STATUS_SUCCESS)
->getQuery()
->getResult()
;
推荐阅读
- php - 无法重新声明函数名
- python - 如何使用带有 Dense 的热编码输出向量在 keras 中训练模型
- arrays - 查找满足某些约束的无序行对的索引
- botframework - LUIS - 实体类型列表,如何最好地使用?
- scala - 如何将 Java 库包含到 scala 项目中
- python - python - object() 没有参数错误
- bash - 如何在内部 sudo-bash 脚本中访问 $USER?
- python - 多数组计算中的cupy执行错误
- c++ - 如何查找数组中是否有任何重复元素?C++
- excel - 如何在另一个 vba excel 中获取某一列中某些值的总和