如何使用 eloquent/fluent 从单个查询中插入多行
How to insert multiple rows from a single query using 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}]
有没有办法将上面的结果复制到 另一个 table 以便我的 table 看起来像这样?
ID|user_id|subject_id
1 |8 |9
2 |8 |2
我遇到的问题是 $query
可以预期任意数量的行,因此我不确定如何遍历未知数量的行。
使用 Eloquent 或查询构建器在 Laravel 中进行批量插入真的很容易。
您可以使用以下方法。
$data = [
['user_id'=>'Coder 1', 'subject_id'=> 4096],
['user_id'=>'Coder 2', 'subject_id'=> 2048],
//...
];
Model::insert($data); // Eloquent approach
DB::table('table')->insert($data); // Query Builder approach
在您的情况下,您已经在 $query
变量中拥有数据。
使用Eloquent
$data = array(
array('user_id'=>'Coder 1', 'subject_id'=> 4096),
array('user_id'=>'Coder 2', 'subject_id'=> 2048),
//...
);
Model::insert($data);
无论是否使用查询生成器,在 Laravel 中进行批量插入都非常容易。
可以使用如下官方方法
Entity::upsert([
['name' => 'Pierre Yem Mback', 'city' => 'Eseka', 'salary' => 10000000],
['name' => 'Dial rock 360', 'city' => 'Yaounde', 'salary' => 20000000],
['name' => 'Ndibou La Menace', 'city' => 'Dakar', 'salary' => 40000000]
], ['name', 'city'], ['salary']);
我有以下查询:
$query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get();
正如预期的那样,我得到了以下结果:
[{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}]
有没有办法将上面的结果复制到 另一个 table 以便我的 table 看起来像这样?
ID|user_id|subject_id
1 |8 |9
2 |8 |2
我遇到的问题是 $query
可以预期任意数量的行,因此我不确定如何遍历未知数量的行。
使用 Eloquent 或查询构建器在 Laravel 中进行批量插入真的很容易。
您可以使用以下方法。
$data = [
['user_id'=>'Coder 1', 'subject_id'=> 4096],
['user_id'=>'Coder 2', 'subject_id'=> 2048],
//...
];
Model::insert($data); // Eloquent approach
DB::table('table')->insert($data); // Query Builder approach
在您的情况下,您已经在 $query
变量中拥有数据。
使用Eloquent
$data = array(
array('user_id'=>'Coder 1', 'subject_id'=> 4096),
array('user_id'=>'Coder 2', 'subject_id'=> 2048),
//...
);
Model::insert($data);
无论是否使用查询生成器,在 Laravel 中进行批量插入都非常容易。 可以使用如下官方方法
Entity::upsert([
['name' => 'Pierre Yem Mback', 'city' => 'Eseka', 'salary' => 10000000],
['name' => 'Dial rock 360', 'city' => 'Yaounde', 'salary' => 20000000],
['name' => 'Ndibou La Menace', 'city' => 'Dakar', 'salary' => 40000000]
], ['name', 'city'], ['salary']);