これは私の基本/親エンティティであり、その子が独自のテーブルを使用するように設定されています。
/** * @ORM\エンティティ * @ORM\Table(name="layer_object") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"サービス"="サービス", "航空機"="航空機", ...}) */ クラスLayerObject {}
航空機エンティティ。元気いっぱいの素朴な子
/** * @ORM\エンティティ * @ORM\Table(name="航空機") */ クラス Aircraft は LayerObject を拡張します
サービス エンティティ。それ自体が単一テーブルの継承を使用している複雑な子。
/** * @ORM\エンティティ * @ORM\Table(name="サービス") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"ground"="Ground", "onboard"="Onboard"}) */ class Service extends LayerObject {}
Service エンティティの子
/** * @ORM\エンティティ */ class Ground extends Service {}
app/console doctrine:schema:validate
エラーは検出されませんが、単一テーブルの継承を使用する必要がある「サービス」テーブルが生成されませapp/console doctrine:schema:update --force
ん。サービス エンティティの定義が単純に無視されているようです。
もちろん、このテーブルの SQL を手動で作成することもできますが、アプリケーションは大きくなり、ある時点で移行を使用する必要があります。
誰かが私をある方向に向けることができますか? ありがとう。
重複が見つかりましたが、これまでのところ回答はありません。参照: Doctrine 2 multiple level inheritance
編集:
第2レベル(エンティティ)にもクラステーブル継承を使用すると@ORM\InheritanceType("JOINED")
、Service
かなりうまく機能します。参照: Doctrine2 複数レベルの継承