我正在尝试开发一个朋友系统,我需要在我的用户实体上建立多对多关系;现在,这就是我所做的:
/**
* @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;
但是我想为这些关系添加一些额外的字段,例如创建日期或状态(已接受,待定,......);我创建了另一个实体“朋友”,我希望这个实体可以用作朋友之间的链接。但我真的不知道如何管理这个......
你有什么想法吗?
谢谢!
答案 0 :(得分:9)
我担心你需要额外的课来建立这样的联系。 以下是学说文档的提示:
为什么多对多关联不太常见?因为经常你 想要将其他属性与关联相关联,其中 你介绍一个关联类的情况。因此,直接 多对多关联消失并被替换为 3个参与者之间的一对多/多对一关联 类。
我想应该是朋友 - >特殊关联类(使用fileds:user_id,friend_id,创建日期) - >朋友。 并且您将朋友与两个提交的$ myFriends和$ imFriendOf中的特殊课程联系起来:)