这是我的基础/父实体,设置它的子实体使用他们自己的表。
/** * @ORM\实体 * @ORM\Table(name="layer_object") * @ORM\InheritanceType("已加入") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"service"="Service", "aircraft"="Aircraft", ...}) */ 类层对象 {}
飞机实体。一个简单的孩子,做得很好
/** * @ORM\实体 * @ORM\Table(name="飞机") */ 飞机类扩展了 LayerObject
服务实体。一个复杂的孩子,它本身正在使用单表继承。
/** * @ORM\实体 * @ORM\Table(name="服务") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"ground"="Ground", "onboard"="Onboard"}) */ 类服务扩展 LayerObject {}
服务实体的子实体
/** * @ORM\实体 */ 地面类扩展服务{}
app/console doctrine:schema:validate
没有发现错误,但app/console doctrine:schema:update --force
不会生成“服务”表,该表应该使用单表继承。似乎服务实体定义被简单地忽略了。
当然我可以手动为这个表创建 SQL,但是应用程序会增长,在某些时候我需要使用迁移。
有人能指出我的方向吗?谢谢。
找到了一个重复的,但是目前还没有答案,请看:Doctrine 2 multi level inheritance
编辑:
当我也将类表继承用于第二级(@ORM\InheritanceType("JOINED")
对于Service
实体)时,它工作得很好。参见:Doctrine2 多级继承