mysql - Symfony 2 自引用多对多存储库

标签 mysql database symfony doctrine-orm

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

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

我尝试直接在 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 的字段。

我到底怎样才能正确实现这一目标?

最佳答案

您可以使用MEMBER OF学说关键字

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

关于mysql - Symfony 2 自引用多对多存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764449/

相关文章:

php - 获取 MYSQL 结果为 key=>value 格式,尽管 key 不是字段名

mysql - 数据库设计问题 - 多人游戏

php - 更新composer.json中的symfony/symfony版本

Mysql错误1451但找不到引用id的行

php - 将所有图像加入到其相关页面

java - 如何显示自定义列名 JTable 而不是来自数据库?

mysql - 更好的数据库设计可以在 mysql 中保存大量员工详细信息

symfony - 如何在OneToMany/ManyToOne上订购

.htaccess - 使用 .htaccess 将所有 url 重定向到 https,图像除外(在 Symfony2 中)

mysql - 我应该在 node.js 中使用哪个数据库?