我有3个不同的实体,所有这些都需要进入特色产品/ entites /中的任何一个表。问题是特色产品可以是entityA,entityB或entityC类型。我如何对此进行建模并为其制作symfony2表单?什么是最好的方法?
比方说,例如,它是一个需要选择特色产品的汽车经销商,但产品可能是“摩托车”,“汽车”或“卡车”(所有这些都是三个类,其中3个表存储他们的数据)。
我可以想到一个可以为一对多的可空外键的表,并且只允许一个非null,但这对我来说似乎不对。
答案 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