2013-03-19 22 views
0

我想知道是否有可能轻松实现以下在CakePHP:CakePHP保存HasMany通过,如果它不存在

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

现在,当添加一个新的食谱,我有多种成分,可以很容易地与$this->Recipe->saveAssociated();保存 - 只要我已经知道成分的外键。
尽管如此,因为可以有无数的成分,所以不可能将它们全部填入<select>字段或类似的东西。因此,我希望用户用$this->Recipe->RecipeIngredient->Ingredient['title']填写一个字段,并检查数据库是否与标题中的现有条目对应,如果有,请获取该标识并将其填入食谱成分表中,否则创建一个新成分并将该成分保存到RecipeIngredients

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

回答

0

嗯,你可以做的是创造一个beforeSave功能在您的模型。如果配料的POST'ed数据已经存在(您可以查找LIKE为Ingredient['title']的选项中的哪个位置),请抓住该ID并将其存储在POST'ed阵列中。如果数据库中没有这样的成分,请直接存储它,获取已保存的ID并将其存储在POST'ed阵列中。