【发布时间】:2020-05-01 05:27:17
【问题描述】:
我正在使用 Lumen 构建一个简单的食谱 API。
此时,设置是这样的:
-
多对多关系:
-
recipe有很多ingredients -
ingredient有很多recipes
-
-
一对多关系:
-
recipe有很多steps
-
多对多关系是使用关联表实现的,ingredient_recipe:
这按预期工作,并允许我访问,例如,$someRecipe->ingredients 以获取链接到特定食谱的所有成分。
但是 - 这是我不太确定的部分 - 给定特定的 recipe-ingredient 关系,ingredient 也有特定的 measure(例如“毫升”)和数量。
我现在解决这个问题的方法是简单地将measure_id 添加到关联表中的每个recipe-ingredient 关系:
我使用以下代码完成此操作:
$recipe->ingredients()->attach($ingredient_model, ['amount' => GIVEN_AMOUNT, 'measure_id' => GIVEN_MEASURE_ID);
这可行,但会使获取给定食谱中每种成分的数量和量度的查询稍微复杂一些。
我的问题:是否有另一种,也许更多Eloquent 方法来完成我没有看到的这个?或者对于我不知道的这些类型的案例,还有其他数据库设计最佳实践吗?
【问题讨论】:
-
从数据库的角度来看,这是正确的解决方案。
-
这是正确的。一个扩展是在成分上增加另一列,告诉您每种可用成分的数量(该量度)
标签: database laravel database-design eloquent lumen