0

我在我的用户实体上有一个自引用多对多关系,因为他们可以有很多关注者或关注许多其他用户。

我现在正在尝试在用户存储库中编写一个查询,以确定用户是否正在关注另一个用户。

我试图直接在 user_relations (映射表)上编写查询,但它不会让我因为它与用户实体无关。

所以我尝试了:

$query = $this->createQueryBuilder('u')
            ->select('count(u.id)')
            ->innerJoin('u.following', 'r')
            ->where('u.id = :userID')
            ->where('r.from_id = :followingID')
            ->setParameter('userID', $userId)
            ->setParameter('followingID', $followingId)

这会导致错误指出用户实体没有名为 from_uid 的字段。

我怎么能正确地做到这一点?

4

1 回答 1

0

您可以使用MEMBER OF教义关键字

$query = $em->createQuery('SELECT u.id FROM User u WHERE :followingID MEMBER OF u.following'); 
$query->setParameter('followingID', $followingId); 
$ids = $query->getResult();
于 2013-07-21T17:52:37.000 回答