- Published on
CakePHPでループ中にsaveメソッドを実行したい
- Authors

- Name
- nisyuu (にしゅう)
- @nishilyuu
forやforeach中にデータベース保存を実行する際、必ずcreateメソッドを実行する必要があります。
もし実行しなかった場合は、初めの保存だけidが割り振られ、その他のデータにはidがない状態となります。
CakePHP2公式ドキュメントにもループ中で save を呼び出すときは、 create() を忘れないようにしてください。と記載されています。
実際にコードはこんな感じになります。
foreach($Dishes as $data){
$this->Recipe->create();
$this->Recipe->save($data);
}
create(false)とすると、新規登録であることを明示してデータ保存ができます。
参考
https://book.cakephp.org/2.0/ja/models/saving-your-data.html http://www.kaasan.info/archives/2543