これは自分のベース/親エンティティで、子が独自のテーブルを使用するように設定されています。単一のテーブル継承エンティティがクラステーブル継承エンティティを拡張できますか?
/** * @ORM\Entity * @ORM\Table(name="layer_object") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"service"="Service", "aircraft"="Aircraft", ...}) */ class LayerObject {}
航空機エンティティ。単純な子供はうまくやっている
/** * @ORM\Entity * @ORM\Table(name="aircraft") */ class Aircraft extends LayerObject
サービスエンティティ。複雑な子は、それ自体が単一のテーブル継承を使用しています。サービスエンティティ
/** * @ORM\Entity */ class Ground extends Service {}
app/console doctrine:schema:validate
の
/** * @ORM\Entity * @ORM\Table(name="service") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"ground"="Ground", "onboard"="Onboard"}) */ class Service extends LayerObject {}
子供がちょうど「のサービス」テーブル、単一のテーブルを使用する必要があるものを生成しませんapp/console doctrine:schema:update --force
エラーが検出されなかったが、継承。サービスエンティティ定義が単に無視されるようです。
私はこのテーブルのSQLを手動で作成できますが、アプリケーションが大きくなり、ある時点で移行を使用する必要があります。
誰かが私をある方向に向けることができますか?ありがとう。 Doctrine 2 multiple level inheritance
編集:
私も第二レベル(Service
エンティティの@ORM\InheritanceType("JOINED")
)のクラステーブル継承を使用する場合、それはかなり作品を参照してください、複製を見つけましたが、何の答えは今のところ存在しない
よく参照:Doctrine2 Multiple level inheritance
ありがとうございます。これは基本的には「一番上のクラスで継承型を選んでそれに固執する」という意味です。今のところ、これは私のアプリケーションでは問題ありません... – virtualize