Doctrine2:从对象X到对象X的多对多

时间:2012-05-21 16:15:40

标签: doctrine-orm many-to-many

我尝试为用户设置“关注”功能,因此用户可以关注用户。

我尝试通过添加多对多关系来实现这一点:

@ORM\ManyToMany(targetEntity="User",inversedBy="User",fetch="LAZY",cascade={"persist"})
@ORM\JoinTable=(name="user_followers",
joinColumns={
  @ORM\JoinColumn(name="user_id", referencedColumnName="id")
},
inverseJoinColumns={@JoinColumn(name="follower_id",referencedColumnName="id")}
)

现在,doctrine创建一个只有一个字段user_id的表user_user。

我真的不知道如何宣布这个。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。

您实际上可以使用自引用多对多解决方案。来自学说网站:

<?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();
    }

    // ...
}

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/association-mapping.html#many-to-many-self-referencing