이 글은 덧글이어야했지만 내 평판은 너무 낮습니다. 미안합니다.
불행히도 다형성 연관은 CTI (클래스 테이블 상속)와 완전히 동일하지 않습니다. CTI는 모든 하위 클래스에 대해 동일한 ID를 가진 상위 테이블이 필요합니다.
CTI는 대부분의 경우 작동 할 수 있지만 이미 고유 한 ID가 있거나 기존 ID 유형이 다른 기존 엔터티간에 다형 연관을 만들려는 경우 문제가 될 수 있습니다.
게다가 CTI는 각 하위 클래스에 대한 부모 테이블에 레코드를 생성해야합니다.이 레코드는 다형성 연관에 쓸모가 없습니다. 다형성 연관은 테이블을 필요로하지 않아야하며 기존 테이블을 (id, type) 조건으로 조인해야합니다. Doctrine은 단순성/성능상의 이유로 부모 테이블을 필요로한다고 생각합니다.
CTI가 해결책이 아닌 경우 Repository 수준에서 다형성 연관을 에뮬레이션하는 것이 좋습니다. 즉 $ type 속성을 사용하여 추상 저장소를 만들고 현재 쿼리를 자동으로 대상 테이블에 결합하는 polymorphicJoin 메서드를 구현합니다. id/type 조건. 그런 다음 추상 Repository를 하위 클래스 Repositories로 확장하고 find/select 메소드에서 필요한 경우 polymorphicJoin 메소드를 호출하십시오.
Doctrine에서 그런 종류의 연관성이 구현 되었다면 정말 멋질 것입니다.