CakePHP2:ループの中でsaveメソッドを実行したい

forやforeach中にデータベース保存を実行する際、必ずcreateメソッドを実行する必要があります。

もし実行しなかった場合は、初めの保存だけidが割り振られ、その他のデータにはidがない状態となります。

CakePHP2公式ドキュメントにも「ループ中で save を呼び出すときは、 create() を忘れないようにしてください。」と記載されています。

実際にコードはこんな感じになります。

[php title=” “]
foreach($Dishes as $data){
$this->Recipe->create();
$this->Recipe->save($data);
}
[/php]

create(false)とすると、新規登録であることを明示してデータ保存ができます。

参考
https://book.cakephp.org/2.0/ja/models/saving-your-data.html
http://www.kaasan.info/archives/2543