以下情景:
Recipe hasMany RecipeItem
RecipeItem belongsTo Recipe, Ingredient
(Ingredient
可能与hasMany RecipeItem
相关联,但我不需要那种关系。)
所以基本上是一个没有连接表的单面HABTM,因为我的连接元素(RecipeItem
)需要有一个额外的属性:count。
本文:http://book.cakephp.org/1.3/view/1650/hasMany-through-The-Join-Model描述了如何一次性创建/保存或完全分离。我想要的是创建分开的一面(成分)和另一面(食谱)与关联。创建新配方时,您可以选择多种成分。
你会怎么做? 感谢。
答案 0 :(得分:0)
老实说,我认为你应该尝试简化你的架构。听起来不必要复杂。为什么需要RecipeItem 和成分的记录?他们看起来应该是一样的。
您可以在联接表中创建其他字段,这样您就不需要额外的关系了。我认为您应该能够使用食谱HABTM成分并完成。
此外,我倾向于无法正确格式化表单数据,因为蛋糕的工作自动化。对我来说,更容易格式化我想手动保存的连接表记录,然后使用连接表模型显式保存它们(在清除现有记录之后)。类似的东西:
$toSave = array();
$this->loadModel('RecipesIngredients');
foreach($this->data['Ingredient'] as $ingredient) {
$toSave[] = array(
'recipe_id'=>$this->data['Recipe']['id'],
'ingredient_id'=>$ingredient['id'],
'count'=>$ingredient['count']
);
}
$this->RecipesIngredients->deleteAll(array('recipe_id'=>$this->data['Recipe']['id']);
$this->RecipesIngredients->saveAll($toSave);