あなたのリンクに私の友人は、ユーザーの友人を取得し、友達を追加するだけでこのコレクションに友人を追加し、エンティティを保存するマネージャー)、新しいユーザーを友人として追加するには、コレクションにカスケード保存を追加する必要があります。
はあなたが
$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>
私のデータベースには、user_idとfriend_user_idを含む新しいテーブルがあります。しかし、私はソースコードに "friend"という名前のエンティティを持っていません。 – Patron
それは自己参照関係ですが、友人エンティティではありませんが、今はあなたのユーザーエンティティには、ユーザーの集まりであるフィールドフレンドがあります –
あなたにとっては大丈夫ですか? –