【发布时间】:2013-07-19 19:44:58
【问题描述】:
我的用户实体有一个自引用多对多关系,因为他们可以有很多关注者或关注很多其他用户。
我现在正在尝试在用户存储库中编写一个查询,以确定用户是否正在关注另一个用户。
我试图直接在 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 的字段。
我怎么能正确地做到这一点?
【问题讨论】:
-
r.from_id是一个映射User::$from_id。猜测'r'是一个用户实体,试试r.id?我只是假设,因为您的 User 实体未添加到您的问题中。 -
啊,就像你说的 r.id 是正确的,因为它没有查看映射表 user_relations,就像我想的那样,它查看的是另一个用户实体。我一直在尝试使用表格而不是实体来使用类似的教义语言。
-
:) 但它不是......它是对象关系;) 如果你定义一个关系,大多数时候
targetEntity的实例在另一边。或包含它们实例的集合/数组。或者只是null。当你遇到这样的错误时,请记住这一点;)
标签: mysql database symfony doctrine-orm