2017-09-24 10 views
0

ManyToMany自己参照を使用してフレンドリストを作成したいと思います。 私はthis linkに続き、それは良いと思われる。しかし、今、私は私のコントローラで何のアクションを持っている必要があります。 1 - すべてのマイフレンド/または現在のユーザーのすべてのすべての友人 2-など多対多symfony 3フレンドリスト

はありがとうございました「友人を追加」などのリンクを使用して、firendを追加しますあなたの時間と回答

答えて

0

あなたのリンクに私の友人は、ユーザーの友人を取得し、友達を追加するだけでこのコレクションに友人を追加し、エンティティを保存するマネージャー)、新しいユーザーを友人として追加するには、コレクションにカスケード保存を追加する必要があります。

はあなたが

$currentUser= $this->get('security.context')->getToken()->getUser(); 
$myFriends = $currentUser->getMyfriends(); 
$this->render('your-template.html.twig', array(
    'myFriends' => $myFriends, 
)); 

とし、あなたの小枝テンプレートでアクションを実装する必要がgetMyFriends、addFriendとあなたのコントローラでremoveFriend

<?php 
/** @Entity */ 
class User 
{ 
    // ... 

    /** 
    * Many Users have Many Users. 
    * @ManyToMany(targetEntity="User", mappedBy="myFriends") 
    */ 
    private $friendsWithMe; 

    /** 
    * Many Users have many Users. 
    * @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(); 
    } 

    public function getMyFriends(){ 
     return $this->myFriends; 
    } 

    public function addFriend(User $friend){ 
     $this->myFriends->add($friend); 
    } 

    public function removeFriend(User $friend){ 
     $this->myFriends->removeElement($friend); 
    } 
} 

のようないくつかのメソッドを追加する必要が

<h1>My friends</h1> 
<ul> 
    {% for friend in myFriends %} 
     <li>{{ friend.username }}</li> 
    {% endfor %} 
</ul> 
+0

私のデータベースには、user_idとfriend_user_idを含む新しいテーブルがあります。しかし、私はソースコードに "friend"という名前のエンティティを持っていません。 – Patron

+0

それは自己参照関係ですが、友人エンティティではありませんが、今はあなたのユーザーエンティティには、ユーザーの集まりであるフィールドフレンドがあります –

+0

あなたにとっては大丈夫ですか? –

関連する問題