2014-04-09 2 views
0

Doctrine2의 다형성 연결을 이해하려고합니다.Doctrine2 - 두 개의 다른 개체에서 동일한 개체에 대한 다형성 연관

내가 알고 있듯이 기본 다형성 연결은 상속을 사용하여 작동합니다. 경우, 예를 들어, 나는 테이블/클래스 다음 OWNER, CATDOG, 어느 CAT 또는 DOG 테이블에 가리 키도록 $owner->pet를 활성화하는 방법을 가지고, 그들 각각의로 알려져 네 번째 클래스, PET를 확장해야하는 것 맵 된 슈퍼 클래스 $owner->pet은 할당 된 내용에 따라 CAT 또는 DOG 중 하나를 반환 할 수 있으며 Doctrine2는이를 구별 할 수 있습니다.

충분히 간단합니다. 하지만 같은 객체를 가리킬 수있는 두 개의 다형성 연관을 갖고 싶다면 어떻게해야할까요? 예를 들어, 내가 FLEET 또는 PLANET을 명령 할 수있는 ADMIRALS이라는 테이블이 있다고 가정 해 보겠습니다. 각각 SECTORS이라는 표가 있으며 각 표에는 PLANET 또는 MOON이 포함될 수 있습니다.

의 내가 $admiral->command 참조 할 것을 가정하자 모두 PLANETSFLEETS, 나는 $sector->contents 참조 할 것을 PLANETSMOONS 모두. PLANET은 매핑 된 수퍼 클래스로 commandcontents을 확장 할 수 없습니다. 이 작업을 수행하는 다른 방법이 있습니까?

답변

0

당신은 시도 할 수 ResolveTargetEntityListener see

당신은

동일 분야의 내용

+0

에서 함께 모두 PLANETS 및 함대에 의해 구현되는 인터페이스에 제독의 명령 속성을 가리킬 수 있습니다 "대부분의 상황에서 ResolveTargetEntityListener는 대상을 단일 o로만 변경할 수 있으므로이 인터페이스를 구현해야합니다. 죽여라. " PLANETS와 FLEETS 모두 동일한 인터페이스를 구현할 수 없으므로이 목적으로 사용하지 못할 수 있습니다. 내가 놓친 게 있니? –

+0

나는 이미 자신의 유스 케이스에 사용하고 있는데, 여기서는 property ** tarif **가 다른 2 개의 엔티티를 가리킬 수 있고, 엔티티 ** Tarif **는 속성 ** subject **가 둘 다 가리킬 수 있습니다. 내 경우 엔 효과가 있었어. – zavalit