Mysql Symfony 2自引用多对多存储库

Mysql Symfony 2自引用多对多存储库,mysql,database,symfony,doctrine-orm,Mysql,Database,Symfony,Doctrine Orm,我在我的用户实体上有一个自引用多对多关系,因为他们可以有许多追随者或跟随许多其他用户 我现在尝试在用户存储库中编写一个查询,它将确定一个用户是否在跟踪另一个用户 我试图在用户关系(映射表)上编写查询目录,但它不允许我这样做,因为它与用户实体无关 所以我试着: $query = $this->createQueryBuilder('u') ->select('count(u.id)') ->innerJoin('u.followin

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

我现在尝试在用户存储库中编写一个查询,它将确定一个用户是否在跟踪另一个用户

我试图在用户关系(映射表)上编写查询目录,但它不允许我这样做,因为它与用户实体无关

所以我试着:

$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\u uid的字段


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

你可以使用
成员的
条令关键字

$query = $em->createQuery('SELECT u.id FROM User u WHERE :followingID MEMBER OF u.following'); 
$query->setParameter('followingID', $followingId); 
$ids = $query->getResult();

r.from\u id
是一个映射
用户::$from\u id
。猜测“r”是用户实体,请尝试类似于
r.id
?我只是假设,因为你的用户实体没有添加到你的问题中。啊,就像你说的r.id是正确的,因为它没有查看映射表User\u关系,就像我想的那样,它正在查看另一个用户实体。我一直试图使用条令语言,比如使用表格而不是实体。:)但它不是。。。它是对象关系;)如果定义关系,则大多数情况下,
targetEntity
的实例位于另一端。或包含其实例的集合/数组。或者干脆
null
。当你遇到这样的错误时,试着记住这一点;)