Cakephp PHP WEB開発

【Cakephp2→4】saveAll()の複数レコード保存の移行

※本サイトはPR表記を含みます。

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() の引数に渡す形になっています。

 

-Cakephp, PHP, WEB開発
-