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

doctrine は user_id フィールドを 1 つだけ持つテーブル user_user を作成します。

これを宣言する方法が本当にわかりません。何かご意見は?

4

1 に答える 1

0

私は自分で解決策を見つけました。

実際には、自己参照多対多ソリューションを使用できます。Doctrine の Web サイトから:

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

于 2012-05-22T17:23:39.590 に答える