我想使用ManyTomany自我引用来制作友好列表。我遵循了这个链接,看上去很好。但是现在,我的控制器应该采取什么行动:1-获取所有我的朋友/或当前用户的所有朋友2-使用诸如"添加朋友"之类的链接添加firend
谢谢您的时间和答案
在您的链接中,我的朋友是一个学说阵列集合,要让用户的朋友迭代它,然后添加一个朋友,只需在此集合中添加一个朋友并保存实体(使用Entity Manager),也许您需要在集合上添加一个级联以添加新用户为朋友。
您必须添加一些方法,例如getmyfriends,添加朋友和删除朋友
<?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 DoctrineCommonCollectionsArrayCollection();
$this->myFriends = new DoctrineCommonCollectionsArrayCollection();
}
public function getMyFriends(){
return $this->myFriends;
}
public function addFriend(User $friend){
$this->myFriends->add($friend);
}
public function removeFriend(User $friend){
$this->myFriends->removeElement($friend);
}
}
在您的控制器中,您必须使用
实施一个动作$currentUser= $this->get('security.context')->getToken()->getUser();
$myFriends = $currentUser->getMyfriends();
$this->render('your-template.html.twig', array(
'myFriends' => $myFriends,
));
,在您的树枝模板中
<h1>My friends</h1>
<ul>
{% for friend in myFriends %}
<li>{{ friend.username }}</li>
{% endfor %}
</ul>