私のDB構造は次のとおりです。
仕事:
- CTIテーブルワーク
- Workを拡張するMappedSuperclassテーブルAbstractImageWork
- AbstractImageWorkを拡張した最終テーブルPhotoWork
コメント:
- MappedSuperclassテーブルコメント
- Commentを拡張する最終テーブルWorkComment
WorkCommentはWorkに対して ManyToOne の関係を持っています:
@ManyToOne(targetEntity="Work", inversedBy="comments")
WorkはWorkCommentと OneToMany の関係にあります。
@OneToMany(targetEntity="WorkComment", mappedBy="work")
問題は、Doctrine がスキーマの更新中に次のエラーを表示することです。
[Doctrine\ORM\Mapping\MappingException]
It is illegal to put an inverse side one-to-many or many-to-many association on
mapped superclass 'Acme\...\AbstractImageWork#comments'.
これは、 MappedSuperclass AbstractImageWorkがWorkとPhotoWorkの中間にあることに関係していると思いますが、実際にはこの関係を MappedSuperclass ではなく CTI テーブルに置きました..では、Doctrine はなぜこのように動作するのでしょうか?
何か案は?