这是我的基础/父母实体,因此它的孩子正在使用他们自己的表格。单个表继承实体是否可以扩展一个类表继承实体?
/** * @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 * @ORM\Table(name="service") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"ground"="Ground", "onboard"="Onboard"}) */ class Service extends LayerObject {}
服务实体
/** * @ORM\Entity */ class Ground extends Service {}
app/console doctrine:schema:validate
的孩子没有发现错误,但是app/console doctrine:schema:update --force
只是不会产生“服务”表中,应使用单独的表中的一个继承。看起来像服务实体定义简单地被忽略。
当然,我可以手工创建这个表的SQL,但应用程序将会增长,并且在某些时候我需要使用迁移。
任何人都可以在某个方向指向我吗?谢谢。
发现重复的,但目前还没有答案为止,请参阅:Doctrine 2 multiple level inheritance
编辑:
当我使用类表继承了(为Service
实体@ORM\InheritanceType("JOINED")
)第2级太它工作得好。请参阅:Doctrine2 Multiple level inheritance
非常感谢。这基本上意味着:'在最顶层的类中选择一种继承类型并坚持下去'。现在这对我的应用程序来说很好... – virtualize