特色产品有多种可能的产品类型?

时间:2013-02-28 20:38:59

标签: php database symfony

我有3个不同的实体,所有这些都需要进入特色产品/ entites /中的任何一个表。问题是特色产品可以是entityA,entityB或entityC类型。我如何对此进行建模并为其制作symfony2表单?什么是最好的方法?

比方说,例如,它是一个需要选择特色产品的汽车经销商,但产品可能是“摩托车”,“汽车”或“卡车”(所有这些都是三个类,其中3个表存储他们的数据)。

我可以想到一个可以为一对多的可空外键的表,并且只允许一个非null,但这对我来说似乎不对。

1 个答案:

答案 0 :(得分:0)

Lol完全误解了对不起的问题。

无论如何,我认为同样的策略适用于您实际要求的内容。

表'feature_products'object_ID'对象'上的FOREIGN KEY。'ID'

object_ID
1
2
3

表'对象'这只会保存您的对象ID

ID (AI)
1
2
3

表'cars':'对象'上的object_ID FOREIGN KEY。'ID'(无自动增量!)

object_ID | name
1         | Ferrari
2         | Duckatti

表'卡车':'对象'上的object_ID FOREIGN KEY。'ID'(无自动增量!)

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