这是我的基础/父实体,设置它的子实体使用他们自己的表。
/**
* @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 多级继承