Я получаю себя как друг при выполнении метода un репозитория - PullRequest
0 голосов
/ 22 января 2019

Я проверяю друзей, которые приняли мой запрос о дружбе и, таким образом, являются моими настоящими друзьями.Но когда я показываю своих друзей, я становлюсь другом, а не человеком, которого я имею для друга.Это появляется, например, когда мой идентификатор является вторым в таблице.

Я попытался проверить, находится ли идентификатор пользователя в одном из столбцов.Также пытался иметь двустороннюю дружбу, как друг с 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, но как узнать, когда переключаться между этими двумя.

...