Doctrine继承映射

时间:2017-08-15 18:41:48

标签: symfony inheritance doctrine-orm

我有车辆和人员课程。我有可以分配给某个人或车辆的物品。我查看了继承映射,我正在将我的赋值表可视化为使用继承映射的那个,但我不确定我是否正确。我希望我的作业表看起来像:

ID   |   item_id  |  type (vehicle/person) | entityId (the ID of the vehicle or person)
____ |____________|________________________|_____________________________________________
1    |     1      |      person            |       1
2    |     2      |      vehicle           |       1

有人可以解释使用的正确映射吗?也许是一个例子?

1 个答案:

答案 0 :(得分:0)

继承映射适用于(例如)地址可能是人员地址与业务地址的情况。您可以拥有AddressPersonAddress继承自的学说超类BusinessAddressDoctrine Superclass这不适合您的情况。

正确的解决方案是从ManyToManyPersonItem(许多车辆有很多项目)从ManyToMany(很多人都有很多项目)关联VehicleItem。如果您不想将物品分配给人员和车辆,则必须将该逻辑运行到控制器中。

可以让您的Item成为与人或车辆相关联的主要对象,并包含对象类型。这可以而且确实有效,但它确实使您的应用程序变得非常复杂。我以这种方式模拟了当前的项目,但我有充分的理由走这条路。