У меня есть отношение «многие ко многим» в моем пользовательском объекте.
// 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
Теперь я хочу получить три разные пользовательские коллекции:
- MyFriends – коллекция сущностей с параметрами myFriend == true и friendWithMe == false.
- FriendWithMe — набор пользователей с myFriend == false и friendWithMe == true
- MutualFriends – коллекция пользователей с параметрами myFriend == true и friendWithMe == true.
Стандартный метод getMyFriends и getFriendsWithMe (сгенерированный в объекте пользователя) возвращает все записи MyFriends и FriendWithMe, если друзья взаимны =(
Я попытался изучить Критерии, но это не работает с отношениями "многие ко многим".