Cake2から4への移行時に削除されているメソッドが多数ありますが、その中の一つに saveAll()
があります。
保存する際の複数レコードのデータ構造は、基本的に同じで大丈夫です。
複数保存する場合のデータ構造
(int) 1 => array( 'name' => 'taro', 'username' => 'tarochan', ), (int) 2 => array( 'name' => 'hana', 'username' => 'hanachan', ),
上記のように各配列の中に配列キーがカラムフィールド名であり、それに保存する値があればOKです。
Cake2: 複数レコードを保存: saveAll()
$this->Hoge->saveAll($data);
Cake2 では $data
に複数レコードを格納したものをぶち込めば複数レコードの保存ができていました。
Cake4: 複数レコードを保存: saveMany()
$entities = $this->Hoges->newEntities($data); $this->Hoges->saveMany($entities);
Cake4 では saveAll()
の代わりに saveMany()
を利用すれば複数レコードの保存ができます。
あと、お作法として newEntities()
、または更新の場合は patchEntities()
でエンティティを生成し、それを saveMany()
の引数に渡す形になっています。
■ Cakephp4: 複数レコードの変換
https://book.cakephp.org/4/ja/orm/saving-data.html#id9
■ Cakephp4: saveMany()
https://api.cakephp.org/4.4/class-Cake.ORM.Table.html#saveMany()