0

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

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

@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")}
)

现在,学说创建了一个表 user_user,只有一个字段 user_id。

我真的不知道如何声明这一点。有什么想法吗?

4

1 回答 1

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-reference

于 2012-05-22T17:23:39.590 回答