0

CakePHPで次のことを簡単に達成できる可能性があるかどうか疑問に思いました。

私は3つのモデルを持っています。レシピ材料レシピ材料。1つのレシピに多くの材料を含めることができます。関係はモデルRecipeIngredientsを介して保存されるため、関係を介してHasManyがあります。

これで、新しいレシピを追加するときに、複数の材料があります $this->Recipe->saveAssociated();。これは、材料の外部キーをすでに知っている限り、簡単に保存できます。 それにもかかわらず、無数の成分が存在する可能性があるため、フィールドまたは同様のもの
にそれらすべてを入力することは不可能です。<select>したがって、ユーザーがフィールドに$this->Recipe->RecipeIngredient->Ingredient['title']入力し、データベースにタイトルのある既存のエントリと照合するようにします。はいの場合は、IDを取得してRecipeIngredientsテーブルに入力します。そうでない場合は、新しい材料を作成して、そのIDをRecipeIngredientsに保存します。

通常、CakePHPにはショートカットがたくさんありますが、この場合は何も見つかりませんでしたが、見落としていた簡単な解決策があるかもしれません。

4

1 に答える 1

0

さて、あなたができることはbeforeSaveあなたのモデルに関数を作成することです。材料のPOST'edデータがすでに存在する場合(オプションのLIKEがどこにあるかを見つけることができますIngredient['title'])、IDを取得し、それをPOSTされた配列に格納します。データベースにそのような成分がまだない場合は、それを直接保存し、保存されたIDを取得して、POSTされた配列に保存します。

于 2013-03-20T12:49:43.787 に答える