CakePHP保存HasMany,如果它还不存在

时间:2013-03-19 21:11:10

标签: php database cakephp

我想知道是否有可能在CakePHP中轻松实现以下功能:

我有三个型号。 食谱成分食谱成分。一个食谱可以有许多成分,通过Model RecipeIngredients 保存关系,因此我们有一个HasMany通过关系。

现在,在添加新食谱时,我有多种成分,可以轻松保存$this->Recipe->saveAssociated(); - 只要我已经知道成分的foreignKey。
然而,由于可能有无数的成分,所以不可能在<select>领域或任何类似的东西中填充它们。因此,我希望用户使用$this->Recipe->RecipeIngredient->Ingredient['title']填写一个字段,并根据带有标题的现有条目检查数据库,如果是,请获取ID并将其填入 RecipeIngredients 表中,否则创建一个新的成分并将该ID保存到 RecipeIngredients

通常CakePHP充满了快捷方式,但在这种情况下我找不到任何东西,但也许有一个我忽略的简单解决方案..

1 个答案:

答案 0 :(得分:0)

嗯,您可以做的是在模型中创建beforeSave函数。如果已经存在该成分的POST'ed数据(您可以在LIKE Ingredient['title']选项中查找,请获取ID并将其存储在POST的阵列中。如果您的数据库中还没有这样的成分,请直接存储它,获取已保存的ID并将其存储在POST的阵列中。