gpt4 book ai didi

symfony - Doctrine2 symfony2 多重多对多关系

转载 作者:行者123 更新时间:2023-12-01 12:52:51 27 4
gpt4 key购买 nike

我有一个 Gift 实体,这个实体有一个发送者和一个接收者......都来自实体 User一个用户可以是许多礼物的发送者给其他用户。同时也是来自许多用户的接收者许多礼物

在我看来,我的 Gift 实体中的解决方案是这样的:

/**
* @ORM\ManyToMany(targetEntity="Tracker\UserBundle\Entity\User")
* @ORM\JoinTable(name="gift_user",
* joinColumns={@ORM\JoinColumn(name="sender_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="gift_id", referencedColumnName="id")}
* )
*/
protected $senders;

/**
* @ORM\ManyToMany(targetEntity="Tracker\UserBundle\Entity\User")
* @ORM\JoinTable(name="gift_user",
* joinColumns={@ORM\JoinColumn(name="receiver_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="gift_id", referencedColumnName="id")}
* )
*/
protected $receivers;

但是当我运行 php app/console doctrine:schema:update --dump-sql 我得到:

  [Doctrine\DBAL\Schema\SchemaException]                          
The table with name 'finaldb.gift_user' already exists.

我要如何更改我的语法、配置,才能得到这样的表格?

gift_id | sender_id | receiver_id

最佳答案

如果没有两个连接表,您将无法实现您想要实现的目标。

每个 @ManyToMany 关联都需要一个不同的连接表。那是因为连接表除了两个链接的实体之外什么都不知道(不知道关联的方向)。此外,由 Doctrine ORM 生成的连接表没有任何自增标识符,因为这两个引用已经代表了表的主键。

关于symfony - Doctrine2 symfony2 多重多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225950/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com