0

我有 2 个模型:订单和小部件。小部件是一种独特的物品,只能存在于一个订单上。我可以用belongsTo 来表示它,即Wiget 的belongsTo 和Order,而Widget 将包含一个order_id 字段。或者,我可以使用连接表来 hasAndBelongsToMany。

由于 Widget 独立存在并稍后与 Order 关联,因此 Widget 上的 order_id 字段保持为空是否“可以”?与将来某个时间将其与订单相关联的连接表相比,这对我来说似乎“不干净”。我还需要获取与订单关联的小部件和不关联的小部件。

设置它的最佳方法是什么?

4

1 回答 1

1

我会使用belongsTo,外键允许为空。它可能看起来不干净,但我认为它是仅次于 HABTM 的最佳选择,如果您声明 Widget 可以仅存在于一个订单中。有一个连接表只是为了将一条记录关联到另一条记录似乎相当混乱。

如果您需要获取有订单和没有订单的小部件,只需使用 order_id = null 进行过滤。或者,如果您使用 Containable Behaviour 进行查找,如果 Widget 的 order_id 为 null,则根本不会检索记录。

于 2013-08-05T18:38:42.347 回答