2013-03-19 26 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陣列中。