我尝试使用symfony2建立社交网络。我不确定如何在User实体中对用户及其朋友进行建模。 我的意思是朋友也是用户,所以我有一个用户实体链接到另一个用户实体。
如何在用户实体的注释中表达这种关系? 目前我有类似的东西: 用户实体:
...
/**
* @ORM\ManyToMany(targetEntity="User")
*
*/
private $friends;
...
将$ friends作为数组收集。这是对的吗?
答案 0 :(得分:0)
这是一种自引用ManyToMany
关系。它实际上是documentation中使用的示例。
基本上,你会这样:
<?php
/** @Entity **/
class User
{
// ...
/**
* @ManyToMany(targetEntity="User", mappedBy="myFriends")
**/
private $friendsWithMe;
/**
* @ManyToMany(targetEntity="User", inversedBy="friendsWithMe")
* @JoinTable(name="friends",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="friend_user_id", referencedColumnName="id")}
* )
**/
private $myFriends;
public function __construct() {
$this->friendsWithMe = new \Doctrine\Common\Collections\ArrayCollection();
$this->myFriends = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
请注意,它被设置为双向关系。也就是说,您可以获取朋友列表和与User
成为朋友的人员列表。