2017-08-15 166 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成爲與人或車輛關聯的主要對象,幷包含對象類型。這可以並且確實有效,但它確實使您的應用程序顯着複雜化。我以這種方式建立了一個當前的項目,但我有充分的理由走這條路。