对于我的食谱分享网站,我想为食谱及其成分创建一个数据库和CakePHP模型。
我创建了两个表:食谱和配料。第三个表是ingredients_recipes的HABTM表,它还存储配方所需的成分量。如何为第三个表创建模型?
第三个表格看起来像这样:
recipe_id
ingredient_id
amount
measurement_unit
我还考虑为measurement_units添加另一个表来存储所有可能的单位(例如汤匙,茶匙,杯子等)。会那太多了吗?
答案 0 :(得分:4)
在Cake的ORM中,HABTM实际上是以下两个模型关联结构的抽象(使用您的示例):
Recipe
-> hasMany IngredientsRecipe
-> belongsTo Ingredient
和
Ingredient
-> hasMany IngredientsRecipe
-> belongsTo Recipe
推断出IngredientsRecipe
模型,仅用于链接两个一流模型Ingredient
和Recipe
。
但是,在您的情况下,您实际上希望 IngredientsRecipe
成为一流的模型,它打破了HABTM抽象。实际上,您需要做的是明确定义上面的两个关联结构,以便Cake将IngredientsRecipe
模型视为一等公民,允许您查询它,将记录保存到其中等等。 / p>
另外,不,我不认为创建额外的MeasurementUnit
模型太多了。它将为您提供更大的灵活性。
答案 1 :(得分:2)
想想这样,然后一次把它当作一块:
`Recipe` (1)--(n) IngredientsRecipe (n)--(1) Ingredient
Recipe
中,创建与IngredientsRecipe
Ingredient
中,创建与IngredientsRecipe
IngredientsRecipe
中创建与Recipe
IngredientsRecipe
创建与Ingredient
在你这样做的时候,忘掉HABTM并反思hasMany
和belongsTo
顺便说一句,您不必调用模型IngredientsRecipe,这只是默认/约定。
完成后,请将其视为适当的hasMany,belongsTo或HABTM。