【发布时间】:2021-12-30 01:06:29
【问题描述】:
我正在使用 symfony 5.4 和教义捆绑包 2.4。 我有一个实体“发送”,我将地址与不同的连接连接起来
class Sending
{
...
/**
* @ORM\ManyToMany(targetEntity=Address::class, inversedBy="getSendingAsSender")
* @ORM\JoinTable(name="sending_sender_address")
*/
private $sender;
/**
* @ORM\ManyToMany(targetEntity=Address::class, inversedBy="getSendingAsRecipient")
* @ORM\JoinTable(name="sending_recipient_address")
*/
private $recipient;
}
以及对应的地址实体。
创建发送类型的对象时,我可以访问发送者和接收者,因此对象的定义似乎很好。
现在我想使用 querybuilder 创建所有发件人或收件人的列表
$builder = $this->entitiyManager->getRepository(Sending::class)
->createQueryBuilder('s')
->join(Address::class, 'a')
...
这会创建一个
select ... from sending s inner join address a
没有任何连接数据或 on 子句,并且中间没有 m:n 连接表。 在地址加入之前添加 ->join('sending_sender_address','sa') 时,它告诉我,没有实体正在发送_sender_address。
我最终需要的是地址对象的集合,它们是任何或选定发送的发件人(或收件人)。
如何正确地进行连接以及如何选择应该使用哪个连接表?
【问题讨论】:
-
应该有效,谢谢。只是迪伦在下面的回答更接近我的需要。
标签: php symfony doctrine many-to-many query-builder