【发布时间】:2013-12-19 23:55:17
【问题描述】:
这是我的基础/父实体,设置它的子实体使用他们自己的表。
/** * @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 multiple level inheritance
编辑:
当我也将类表继承用于第二级时(@ORM\InheritanceType("JOINED") 用于Service 实体)它工作得很好。见:Doctrine2 Multiple level inheritance
【问题讨论】:
标签: symfony doctrine-orm symfony-2.3 single-table-inheritance class-table-inheritance