Doctrine - 三张表的关系
Doctrine - relation of three tables
我在编写 Doctrine Query Builder 时遇到了麻烦。
我有一个 Posts table 与 AccountToken table 相关,例如:
class Posts
/**
* @ORM\ManyToOne(targetEntity="App\Entity\AccountToken")
* @ORM\JoinColumn(name="account_token_id", referencedColumnName="uuid", nullable=false)
*/
protected $accountTokenId;
我正在编写一个查询构建器,我想通过 UUID 提取与 table 相关的所有结果并具有特定状态。 type 值在 AccountToken table.
中定义
在 table 中,type 也有关系,它在 AccountToken table:
中定义
class AccountToken
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Types")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=false)
*/
protected $type;
这对我来说是一个棘手的问题,因为我必须要处理关系。
有人知道如何提取结果吗:
"Return 我的帖子具有 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 的新手,所以不知道如何加入一个在其相关 [=45= 中有价值的 table ].令人困惑。
首先,您的查询中没有任何参数 successStatus
。
我认为你把事情复杂化了。
return $this->createQueryBuilder('p')
->leftJoin('p.accountToken', 'a')
->leftJoin('a.type', 'ct')
->where('ct.successStatus = :successStatus')
->setParameter('successStatus', Types::STATUS_SUCCESS)
->getQuery()
->getResult()
;
我在编写 Doctrine Query Builder 时遇到了麻烦。
我有一个 Posts table 与 AccountToken table 相关,例如:
class Posts
/**
* @ORM\ManyToOne(targetEntity="App\Entity\AccountToken")
* @ORM\JoinColumn(name="account_token_id", referencedColumnName="uuid", nullable=false)
*/
protected $accountTokenId;
我正在编写一个查询构建器,我想通过 UUID 提取与 table 相关的所有结果并具有特定状态。 type 值在 AccountToken table.
中定义在 table 中,type 也有关系,它在 AccountToken table:
中定义 class AccountToken
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Types")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=false)
*/
protected $type;
这对我来说是一个棘手的问题,因为我必须要处理关系。
有人知道如何提取结果吗:
"Return 我的帖子具有 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 的新手,所以不知道如何加入一个在其相关 [=45= 中有价值的 table ].令人困惑。
首先,您的查询中没有任何参数 successStatus
。
我认为你把事情复杂化了。
return $this->createQueryBuilder('p')
->leftJoin('p.accountToken', 'a')
->leftJoin('a.type', 'ct')
->where('ct.successStatus = :successStatus')
->setParameter('successStatus', Types::STATUS_SUCCESS)
->getQuery()
->getResult()
;