我需要为我的项目设置关注者,遵循 (myFriends) hasFriend 逻辑。列“odobera”表示“关注”示例 nick(id user) odobera(关注该用户)。用户 (25) 正在关注用户 (37)。
请求表:
User entity:
/**
* @ORM\OneToMany(targetEntity="TB\RequestsBundle\Entity\Requests", mappedBy="odobera")
*/
protected $followers;
/**
* @ORM\OneToMany(targetEntity="TB\RequestsBundle\Entity\Requests", mappedBy="nick")
*/
protected $myFriends;
public function __construct()
{
parent::__construct();
$this->followers = new \Doctrine\Common\Collections\ArrayCollection();
$this->myFriends = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get myFriends
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getMyFriends()
{
return $this->myFriends;
}
/**
*
* @param \TB\UserBundle\Entity\User $user
* @return bool
*/
public function hasFriend(User $user)
{
return $this->myFriends->contains($user);
}
class Requests
{
/**
* @ORM\ManyToOne(targetEntity="TB\UserBundle\Entity\User", inversedBy="myFriends")
* @ORM\JoinColumn(name="nick", referencedColumnName="id")
*/
protected $nick;
/**
* @ORM\ManyToOne(targetEntity="TB\UserBundle\Entity\User",inversedBy="followers")
* @ORM\JoinColumn(name="odobera", referencedColumnName="id")
*/
protected $odobera;
在控制器中:
$myFollowers=$user->getMyFriends();
返回:
有什么好处:返回 1 条记录。我实际上只关注一个人,你可以在这里看到记录的 id 是 24395
数据库请求表:
我不知道 getMyFriends 函数以那种“格式”返回响应是否好。请仔细看。
然后我从查询和循环中选择关注者:
{% for follower in followers %}
and i print data like this (works greate) {{ follower.nick }}
or if i want some fields from user entity {{ follower.nick.rank }}
{% endfor %}
但问题就在这里:
{% if (app.user.hasFriend(follower.nick)) %}
那返回false,为什么?当我用转储检查控制器时,我跟随这个用户:P 几行结束。