Php 如何使用Elount/fluent从单个查询插入多行

Php 如何使用Elount/fluent从单个查询插入多行,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,我有以下疑问: $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

我有以下疑问:

  $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
可以预期任何数量的行,因此我不确定如何迭代未知数量的行

使用Elount或查询生成器在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']);

对对象集合使用->toArray()方法。它不会将时间戳插入数组中。将'created_at'=>date('Y-m-d H:i:s')、'modified_at'=>date('Y-m-d H:i:s')添加到数组中。来源:我想知道为什么Laravel没有像“createMany”这样的东西。我如何检索ID?如果有人仍然需要它:insert是查询生成器的方法。访问器和变异器不能与此插件一起使用。可能会出错,但此版本不是仅限于8吗?是的,此版本仅在V8中可用