Doctrine2의 다형성 연결을 이해하려고합니다.Doctrine2 - 두 개의 다른 개체에서 동일한 개체에 대한 다형성 연관
내가 알고 있듯이 기본 다형성 연결은 상속을 사용하여 작동합니다. 경우, 예를 들어, 나는 테이블/클래스 다음 OWNER
, CAT
및 DOG
, 어느 CAT
또는 DOG
테이블에 가리 키도록 $owner->pet
를 활성화하는 방법을 가지고, 그들 각각의로 알려져 네 번째 클래스, PET
를 확장해야하는 것 맵 된 슈퍼 클래스 $owner->pet
은 할당 된 내용에 따라 CAT
또는 DOG
중 하나를 반환 할 수 있으며 Doctrine2는이를 구별 할 수 있습니다.
충분히 간단합니다. 하지만 같은 객체를 가리킬 수있는 두 개의 다형성 연관을 갖고 싶다면 어떻게해야할까요? 예를 들어, 내가 FLEET
또는 PLANET
을 명령 할 수있는 ADMIRALS
이라는 테이블이 있다고 가정 해 보겠습니다. 각각 SECTORS
이라는 표가 있으며 각 표에는 PLANET
또는 MOON
이 포함될 수 있습니다.
의 내가 $admiral->command
참조 할 것을 가정하자 모두 PLANETS
및 FLEETS
, 나는 $sector->contents
참조 할 것을 PLANETS
및 MOONS
모두. PLANET
은 매핑 된 수퍼 클래스로 command
및 contents
을 확장 할 수 없습니다. 이 작업을 수행하는 다른 방법이 있습니까?
에서 함께 모두 PLANETS 및 함대에 의해 구현되는 인터페이스에 제독의 명령 속성을 가리킬 수 있습니다 "대부분의 상황에서 ResolveTargetEntityListener는 대상을 단일 o로만 변경할 수 있으므로이 인터페이스를 구현해야합니다. 죽여라. " PLANETS와 FLEETS 모두 동일한 인터페이스를 구현할 수 없으므로이 목적으로 사용하지 못할 수 있습니다. 내가 놓친 게 있니? –
나는 이미 자신의 유스 케이스에 사용하고 있는데, 여기서는 property ** tarif **가 다른 2 개의 엔티티를 가리킬 수 있고, 엔티티 ** Tarif **는 속성 ** subject **가 둘 다 가리킬 수 있습니다. 내 경우 엔 효과가 있었어. – zavalit