JSONファイルをデータベースに挿入するための読み込みスクリプトがあり、このスクリプトはAJAXとローディングインジケータを使用してほぼ50回実行されます。私はこれを使用し、単一のINSERT文のhunderdsを避けるために、これは可能な限り迅速に行わ取得するために、インサートの下の構造を使用するために、ここで、上記の例のようにlaravelでSQLを生成するにはlaravel 5.2複数のAJAXリクエストを使用した複数のAJAXリクエストを使用したバルク挿入toSql()のエラー
INSERT INTO TABLE (COLUMN) VALUES ('value1'),('value2'),('value3')
実行したいですコード:
foreach ($album_data['data'] as $album) {
if (isset($album['name'])) {
$array['id'] = $album['id'];
$array['name'] = $album['name'];
$array['type'] = $album['type'];
$arr_albums[] = $array;
unset($array);
}
}
DB::table('ALBUM')->insert($arr_albums);
これは、ほとんどの時間の作品が、このスクリプトは、私が最初に確認しても、同じアルバムが表示され、他のJSON入力のために、一度に数回を解雇されているので、時々エラーが重複キーに関して発生します既に存在するIDです。
This is the proces currently:
- get all ID's from the JSON file
- use these ID's in a SELECT to check wich are already in the database
- create the INSERT statement for those ID's who are not in the database
エラーが(プロセスへの数3)JSONファイルで同じアルバムIDの持つ2つの以上のAJAX要求が同時に(プロセスへの数2)をチェックし、実行している場合に発生するで挿入同時。
私は、生成されたSQLの末尾に「... DUPLICATE KEY UPDATE ON」を追加することで、この問題を解決しようとするので、私はこのようにそれを行うと仮定:
$query = DB::table('ALBUM')->insert($arr_albums)->toSql();
$query .= " ON DUPLICATE...";
このエラーを引き起こすもの:
Call to a member function toSql() on boolean
"toSql()"関数は "insert()"では使用できないと思いますか?