与额外领域的多对多自我关系?

Jér*_*eil 4 symfony doctrine-orm

我正在尝试开发一个朋友系统,我需要在我的用户实体上建立多对多关系; 现在,这就是我所做的:

/**
 * @ORM\ManyToMany(targetEntity="User", mappedBy="friends")
 */
protected $friendsWith;

/**
 * @ORM\ManyToMany(targetEntity="User", inversedBy="friendsWith")
 * @JoinTable(name="friends",
 *            joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
 *            inverseJoinColumns={@JoinColumn(name="friend_user_id", referencedColumnName="id")}
 *           )
 */
protected $friends;
Run Code Online (Sandbox Code Playgroud)

但我想为这些关系添加一些额外的字段,例如创建日期或状态(已接受,待定,......); 我创建了另一个实体"朋友",我希望这个实体可以用作朋友之间的链接.但我真的不知道如何管理这个......

你有什么想法吗?

谢谢 !

Woj*_*ski 9

我担心你需要额外的课程来建立这样的联系.以下是学说文档的提示:

为什么多对多关联不太常见?因为经常要将其他属性与关联关联,所以在这种情况下引入关联类.因此,直接的多对多关联消失,并被3个参与类之间的一对多/多对一关联所取代.

http://www.doctrine-project.org/docs/orm/2.1/en/reference/association-mapping.html#many-to-many-unidirectional

我想它应该是朋友 - >特殊关联类(与fileds:user_id,friend_id,创建日期) - >朋友.并且您将朋友与两个提交的$ myFriends和$ imFriendOf :)中的特殊课程联系起来