これは私の基本/親エンティティであり、その子が独自のテーブルを使用するように設定されています。
/**
* @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 複数レベルの継承