我想知道是否有可能在CakePHP中轻松实现以下功能:
我有三个型号。Recipes、Ingredients和RecipeIngredients。一个Recipe可以有多个 ingredient ,这个关系通过Model RecipeIngredients保存,因此我们有一个HasMany through关系。现在,当添加一个新的配方,我有多个成分,这可以很容易地保存与$this->Recipe->saveAssociated();
-只要我已经知道成分的外键。
然而,由于可能有无数的成分,因此不可能将它们全部填入<select>
字段或类似的内容中。因此,我希望用户用$this->Recipe->RecipeIngredient->Ingredient['title']
填写一个字段,并根据现有条目的标题检查数据库,如果是,获取id并将其填写在RecipeIngredients表中,否则创建一个新的Ingredient并将该id保存到RecipeIngredients
通常CakePHP充满了快捷方式,但在这种情况下我找不到任何东西,但也许有一个简单的解决方案,我忽略了…
那么,您可以做的是在模型中创建一个beforeSave
函数。如果成分的POST'ed
数据已经存在(您可以在选项LIKE中找到Ingredient['title']
),则获取ID并将其存储在POST'ed数组中。如果数据库中还没有这样的成分,则直接存储它,获取保存的ID并将其存储在POST数组中。