我想知道是否有可能在CakePHP中轻松实现以下功能:
我有三个型号。 食谱,成分和食谱成分。一个食谱可以有许多成分,通过Model RecipeIngredients 保存关系,因此我们有一个HasMany通过关系。
现在,在添加新食谱时,我有多种成分,可以轻松保存$this->Recipe->saveAssociated();
- 只要我已经知道成分的foreignKey。
然而,由于可能有无数的成分,所以不可能在<select>
领域或任何类似的东西中填充它们。因此,我希望用户使用$this->Recipe->RecipeIngredient->Ingredient['title']
填写一个字段,并根据带有标题的现有条目检查数据库,如果是,请获取ID并将其填入 RecipeIngredients 表中,否则创建一个新的成分并将该ID保存到 RecipeIngredients
通常CakePHP充满了快捷方式,但在这种情况下我找不到任何东西,但也许有一个我忽略的简单解决方案..
答案 0 :(得分:0)
嗯,您可以做的是在模型中创建beforeSave
函数。如果已经存在该成分的POST'ed
数据(您可以在LIKE Ingredient['title']
选项中查找,请获取ID并将其存储在POST的阵列中。如果您的数据库中还没有这样的成分,请直接存储它,获取已保存的ID并将其存储在POST的阵列中。