0

私には3つの異なるエンティティがあり、それらはすべて、注目の製品/エンティティ/その他のテーブルに入れる必要があります。問題は、注目の製品がentityA、entityB、またはentityCのタイプである可能性があることです。これをモデル化してsymfony2フォームを作成するにはどうすればよいですか?最善のアプローチは何でしょうか?

たとえば、注目の商品を選択する必要があるのは自動車販売店でしたが、商品は「オートバイ」、「車」、「トラック」のいずれかであるとします(これらはすべて、データを格納する3つのテーブルを持つ3つのクラスです)。

1対多のnull許容外部キーを持ち、1つだけをnull以外にできるようにするテーブルを考えることができますが、これは私には正しくないようです。

4

1 に答える 1

0

Lolは質問を完全に誤解していました。

とにかく、あなたが実際に求めているものにも同じ戦略が当てはまると思います。

テーブル 'featured_products' object_ID 'objects'.'ID' の FOREIGN KEY

object_ID
1
2
3

テーブル 'objects' これはオブジェクト ID のみを保持します

ID (AI)
1
2
3

テーブル 'cars': object_ID FOREIGN KEY on 'objects'.'ID' (自動インクリメントなし!)

object_ID | name
1         | Ferrari
2         | Duckatti

テーブル 'トラック': 'objects'.'ID' の object_ID FOREIGN KEY (自動インクリメントなし!)

object_ID | name
3         | Monster truck

このセットアップは、いくつかのコードも変更する必要があることを意味します。オブジェクトに NULL 値を挿入し、insert_ID を車やトラックなどで使用する必要があるためです。

私は実際にこれを試したことはありません。しかし、次のクエリを使用すると成功する可能性があります。

SELECT
   truck.name, car.name
FROM
   objects
LEFT JOIN trucks ON trucks.object_ID=objects.ID
LEFT JOIN cars ON cars.object_ID=objects.ID
WHERE objects.ID IN((SELECT * FROM featured_products))
GROUP BY objects.ID
于 2013-02-28T20:43:52.793 に答える