Я проверяю друзей, которые приняли мой запрос о дружбе и, таким образом, являются моими настоящими друзьями.Но когда я показываю своих друзей, я становлюсь другом, а не человеком, которого я имею для друга.Это появляется, например, когда мой идентификатор является вторым в таблице.
Я попытался проверить, находится ли идентификатор пользователя в одном из столбцов.Также пытался иметь двустороннюю дружбу, как друг с B, но друг B с A тоже.Я не смог получить работу хранилища для второго метода, поэтому я остановился на этом.
Мой репозиторий:
public function personalFriends($userId){
$em = $this->getEntityManager();
$result = $em->createQuery('SELECT friends FROM AppBundle\Entity\Friends friends
INNER JOIN AppBundle\Entity\User myuser WHERE (friends.friendsWithMe = :userId OR friends.afriendof = :userId) AND friends.friends = 1');
$result->setParameter('userId', $userId);
return $result->getResult();
}
Мой контроллер:
public function indexAction(Request $request)
{
$user = $this->get('security.token_storage')->getToken()->getUser();
$userId = $user->getId();
$posts = $this->getDoctrine()->getRepository(UserPosts::class)->findUserPosts($userId,1);
$friends = $this->getDoctrine()->getRepository(Friends::class)->personalFriends($userId);
return $this->render('default/index.html.twig',
['formed' => null,
'posts' => $posts,
'posted'=>null,
'search' => null,
'friends' => $friends
]);
}
Мой взгляд:
<div class="card card-body">
{{ app.user.username|capitalize }}'s friends:
{% if friends %}
<div>
{% for friend in friends %}
{{ friend.afriendof.username }}
{% endfor %}
</div>
{% else %}
<div>
You have no friends.
</div>
{% endif %}
</div>
Друзья Сущность:
class Friends
{
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="myfriends", fetch="EAGER")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
private $friendsWithMe;
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="friendof", fetch="EAGER")
* @ORM\JoinColumn(name="friend_id", referencedColumnName="id", nullable=false)
*/
private $afriendof;
/**
* @var integer
*
* @ORM\Column(name="request_sent", type="smallint")
*/
private $requestSent;
/**
* @var integer
*
* @ORM\Column(name="friends", type="smallint")
*/
private $friends;
Я хочу получить только друзей, а не себя.Я понял, что должен поменять friend.afriendof.username
на friend.friendswithme.username
, но как узнать, когда переключаться между этими двумя.