CodeLab技術ブログ

プログラミング技術まとめ

[CakePHP3.7]saveAllの代替方法

CakePHP2では、saveAll()メソッドで複数行に一括Insertができたのだが、CakePHP3ではなくなってしまった。
1クエリでInsertできないとなると、大量にInsertが必要な場合かなりのパフォーマンス低下になってしまいます。
どうしたらいいのか?

バージョン
CakePHP 3.8

スポンサードリンク

query()メソッドを使います

use Cake\ORM\TableRegistry;

$articles = TableRegistry::get('Articles');
// 保存するデータ
$data = [
    [
        'title' => 'First post',
    ],
    [
        'title' => 'Second post',
    ],
];
$query = $articles->query();
$query->insert(['title']);
foreach ($data as $d) {
    $query->values($d);
}
// 実行クエリ
$query->execute();
スポンサードリンク
スポンサードリンク

コメントは受け付けていません。