複数条件・複数カラムのアップデートについても紹介しましたが、Laravelを使用していて、複数のレコードをインサートする際にどの様にしていますか?
いちいちforeachで回して、saveメソッドでsaveしていたりするのであれば、一つのクエリで複数のレコードを一気にインサートできるというのを知っていた方が、ソースが綺麗になるかも知れません。
やり方は、Eloquent ORMでもQuery Builderを使用しても簡単です。
$data = array( array('user_id'=>'1', 'subject_id'=> 4096), array('user_id'=>'2', 'subject_id'=> 2048), //... ); Model::insert($data); // Eloquentでの方法 DB::table('table')->insert($data); // Query Builderでの方法
インサートしたい値の連想配列を作成して、その配列をEloquentでもQuery Buildelに与えてインサートすれば、複数のレコードを一つのクエリでインサートすることが出来ます。
この複数のレコードを一つのレコードでインサートするのは、例えば、下記の例の場合、有効です。
$query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get();
このクエリの結果は、下記の様な結果だとします。
[{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}]
上記のEloquentの結果の$queryをinsertメソッドの引数として与えてあげれば、わざわざforeachで回さなくても一つのクエリで複数のレコードをインサートすることが出来ます。
Laravelを使用した際、ソースをなるべく短く、簡略化するために知っておくと良い知識だと思います。
[参考]
・Insert multiple records in one query
・How to insert multiple rows from a single query using eloquent/fluent