我的用户实体中有多对多的自引用关系。
// Acme\DemoBundle\Resources\config\doctrine\User.orm.yml
Acme\DemoBundle\Entity\User:
type: entity
repositoryClass: Acme\DemoBundle\Entity\Repository\UserRepository
table: users
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
username:
type: string
length: 25
unique: true
manyToMany:
friendsWithMe:
targetEntity: User
mappedBy: myFriends
myFriends:
targetEntity: User
inversedBy: friendsWithMe
joinTable:
name: friends
joinColumns:
user_id:
referencedColumnName: id
inverseJoinColumns:
friend_user_id:
referencedColumnName: id
现在我想获得三个不同的用户集合:
Standart getMyFriends getFriendsWithMe(在用户实体中生成)返回所有 MyFriends 和 FriendWithMe 记录,如果朋友互相=(
我试图深入研究标准的一面,但它不适用于多对多关系。
答案 0 :(得分:0)
我认为您的设计结构存在一般性问题。学说中的自我引用关系等于相互关系。不是两个用户都是彼此的朋友的状态听起来更像是FriendsRequest。也许你应该改变这种行为,以便与MutualFriends和MyFriendRequests和RecievedFriendRequest的两个不同关系建立关系。
另一种可能性是使用像“友谊”这样的关系实体,这看起来像
// Acme\DemoBundle\Resources\config\doctrine\Friendship.orm.yml
Acme\DemoBundle\Entity\Friendship:
type: entity
repositoryClass: Acme\DemoBundle\Entity\Repository\FriendshipRepository
table: friendship
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
user_one_accepted:
type: boolean
user_two_accepted:
type: boolean
manyToOne:
user_one:
targetEntity: User
user_two:
targetEntity: User