symfony2实体关系

时间:2014-09-11 23:04:18

标签: symfony

我尝试使用symfony2建立社交网络。我不确定如何在User实体中对用户及其朋友进行建模。 我的意思是朋友也是用户,所以我有一个用户实体链接到另一个用户实体。

如何在用户实体的注释中表达这种关系? 目前我有类似的东西: 用户实体:

...
/**
 * @ORM\ManyToMany(targetEntity="User")
 *
 */
private $friends;
...

将$ friends作为数组收集。这是对的吗?

1 个答案:

答案 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成为朋友的人员列表。