2017-08-15 153 views
-1

我有Vehicle和Person类。我有一些物品可以分配给任何人或车辆。我查看了继承映射,并将可视化的赋值表映射为使用继承映射的映射表,但我不确定自己是否正确。我希望我的分配表看起来像:主义继承映射

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

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

+1

有没有更多的意义,有一个'物品'表,然后两个更多的表?如'person_item'和'vehicle_item'?我认为使用人物/车辆遗产是没有道理的,除非他们拥有许多相同的共同属性或逻辑上相似 –

回答

0

继承映射适用于具有(例如)可能是人员地址与业务地址的地址的情况。你可以有一个PersonAddressBusinessAddress继承的学说超类AddressDoctrine Superclass这不适合你的情况。

正确的解决办法是使从Person一个ManyToMany(很多人有很多的项目)关联ItemManyToMany(许多车辆有很多的项目)从VehicleItem。如果你不想要和物品分配给一个人和一辆车,你必须把这个逻辑加入你的控制器。

可以让您的Item成为与人或车辆关联的主要对象,并包含对象类型。这可以并且确实有效,但它确实使您的应用程序显着复杂化。我以这种方式建立了一个当前的项目,但我有充分的理由走这条路。