PG WORKS

PHPやLinux(サーバー)などのノウハウや、便利なツールを紹介していきます。

【Laravel】大量INSERTする際に使う関数(chunk)

INSERT時にテーブルのカラム数が異常なほど多い場合やテキストデータのサイズが大きいと下記のエラーが出ます。

<?php
//General error: 1390 Prepared statement contains too many placeholders
?>

調べてみると、Laravelに何回か分けてINSERTできる関数があるそうでそれが「chunk」というものだそうです。

500件ずつデータを追加する場合

<?php
//サンプルの配列は1つですが、$inserts配列に1000個以上あるのと過程します。
$inserts[] = array('id'=>1’,'name'=>'テスト'); 
$insert_data = collect($inserts);
foreach ($insert_data->chunk(500) as $chunk) {
   DB::table('sample')->insert( $chunk->toArray());
}
?>