web-dev-qa-db-ja.com

eloquent / fluentを使用して単一のクエリから複数の行を挿入する方法

次のような質問があります。

  $query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get();

そして予想通り私は次のような結果が得られます。

[{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}]

上記の結果を他のテーブルにコピーして、私のテーブルがこのようになるようにする方法はありますか?

ID|user_id|subject_id
1 |8      |9
2 |8      |2

私が抱えている問題は、$queryは任意の数の行を予期できるため、未知の数の行を繰り返す方法がわからないことです。

98
Billy

Eloquentまたはクエリービルダーを使用してLaravelに一括挿入するのは本当に簡単です。

次のような方法があります。

$data = array(
    array('user_id'=>'Coder 1', 'subject_id'=> 4096),
    array('user_id'=>'Coder 2', 'subject_id'=> 2048),
    //...
);

Model::insert($data); // Eloquent approach
DB::table('table')->insert($data); // Query Builder approach

あなたの場合、あなたは既に$query変数の中にデータを持っています。

218

eloquentを使う

$data = array(
    array('user_id'=>'Coder 1', 'subject_id'=> 4096),
    array('user_id'=>'Coder 2', 'subject_id'=> 2048),
    //...
);

Model::insert($data);
11
Vishal Varshney