プロジェクトに (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です
DB リクエスト テーブル:
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を返します、なぜですか? dump :P Few lines overでコントローラーをチェックインしたので、このユーザーをフォローします。