0

내 사용자 엔티티에 다 대다 자체 참조 관계가 있습니다.다 대다 자체 참조 ArrayCollections를 교차하고 교차하는 방법

// 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 

지금 나는 세 가지 다른 사용자 컬렉션 싶어 :

  1. MyFriends을 - myFriend와 개체의 컬렉션을 == true로 friendWithMe == 거짓
  2. FriendWithMe - 사용자의 모음 myFriend == false 및 friendWithMe == true
  3. MutualFriends - 사용 컬렉션 myFriend와 RS == true로 friendWithMe == 사실

하기 Standart getMyFriends는 getFriendsWithMe가 (사용자 개체에서 생성) 친구 = 상호 경우 모든 MyFriendsFriendWithMe 레코드를 반환 (

내가 시도한 기준을 파고 있지만 다 대다 관계에서는 작동하지 않습니다.

답변

0

디자인 구조에 일반적인 문제가 있다고 생각합니다. 교리의 자기 참조 관계는 상호 관계와 같습니다. 두 사용자가 서로 다른 친구가 아닌 주정부는 FriendsRequest와 비슷하게 들립니다. 아마도 MutualFriends 관계와 MyFriendRequests 및 RecievedFriendRequest에 대한 두 가지 다른 관계를 가지기 위해이 동작을 변경해야합니다.

Antother possiblity가이 && (usrA와 usrB하지 친구)의 standart 기능 (getMyFriends이

// 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 
+0

흠 ...하지만 경우 (usrB와 usrA 친구)처럼 보일 수있다 "우정"과 같은 관계 엔티티를 사용하는 것입니다 getFriendsWithMe) 제대로 작동합니다. 그러므로 교리의 자기 참조 관계는 상호 관계와 동일하지 않습니까? 흠 ... 내가 중요한 걸 이해하지 못하는 것 같아. – avkryukov