Значит есть у меня 2 таблицы:
User
followers | OneToMany | mappedBy="followed"
following | OneToMany | mappedBy="follower"
Follow
followed | ManyToOne | inversedBy="followers"
follower | ManyToOne | inversedBy="following"
Получаю подписчики пользователя таким образом:
$qb ->join('u.following', 'follow')
->where('follow.followed = :user')
->setParameter('user', $user)
Подписки таким:
$qb ->join('u.followers', 'follow')
->where('follow.follower = :user')
->setParameter('user', $user)
Теперь мне нужны подписки пользователя, которые не взаимны.
Сделав так, я получаю все взаимные:
$qb ->join('u.followers', 'fs')
->join('u.following','fg')
->where('fs.follower = :user')
->andWhere('fg.followed = :user')
->setParameter('user', $user)
По моим надеждам
where('fg.followed != :user') должно было как раз вывести не взаимные, но на практике вообще ничего не выводится. Возможно это глупая ошибка, но с БД у меня вечная война, надеюсь на помощь.
Спасибо,