2017-08-15 16 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

'items'テーブルとそれぞれに2つのテーブルを持つ方が理にかなっていませんか? 'person_item'や' vehicle_item'など?同じ共通属性を共有していないか、または論理的に似ていない限り、人/車両の継承を使用することは意味がないと思います –

答えて

0

継承マッピングは、(たとえば)個人アドレスとビジネスアドレスの2つのアドレスがある場合のためのマッピングです。 Doctrine Superclass AddressにはPersonAddressBusinessAddressが継承されています。 Doctrine Superclassこれはあなたの状況に適した方法ではありません。

適切な解決策はVehicleItemからPersonからItemManyToManyからManyToMany(多くの人々は、多くのアイテムを持っている)の関連付けを(多くの車両は、多くのアイテムを持っている)を作ることであろう。あなたが人と車の両方に割り当てられたくないアイテムが割り当てられている場合は、そのロジックをコントローラに組み込む必要があります。

Itemは、人物または車両のいずれかへの関連付けを持つ一次オブジェクトのソートであり、オブジェクトタイプを含むことができます。これは動作しますが、実際にはアプリケーションをかなり複雑にします。私はそのような方法で現在のプロジェクトをモデル化しましたが、私はそのルートに行く良い理由がありました。

関連する問題