0

以下场景:

Recipe hasMany RecipeItem
RecipeItem belongsTo Recipe, Ingredient

Ingredient可能与 相关hasMany RecipeItem,但我不需要这种关系。)

所以基本上,一个没有连接表的单面HABTM,因为我的连接元素(RecipeItem)需要有一个额外的属性:计数。

这篇文章:http ://book.cakephp.org/1.3/view/1650/hasMany-through-The-Join-Model描述了如何一次创建/保存全部或完全分离。我想要的是创建分离的一侧(成分)和关联的另一侧(食谱)。创建新食谱时,您可以选择多种成分。

你会怎么做?谢谢。

4

1 回答 1

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);
于 2012-08-19T13:25:19.073 回答