我有以下疑问:

  $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

我的问题是,$查询可以期望任何数量的行,所以我不确定如何迭代通过未知的行数。


当前回答

在Laravel中使用Eloquent或查询构建器进行批量插入非常容易。

您可以使用以下方法。

$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变量中获得了数据。

其他回答

在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']);

用有说服力的

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

Model::insert($data);

在Laravel中使用Eloquent或查询构建器进行批量插入非常容易。

您可以使用以下方法。

$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变量中获得了数据。