当前位置: 首页 > 知识库问答 >
问题:

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

施海
2023-03-14

我有以下疑问:

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

共有3个答案

子车新立
2023-03-14

使用或不使用查询生成器,在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']);
邬浩涆
2023-03-14

使用雄辩

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

Model::insert($data);
华宪
2023-03-14

使用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变量中已经有数据。

 类似资料:
  • 问题内容: 这应该是一个相当简单的问题,但我无法在线找到可靠的答案。我试图将多个行插入到同一表中,但只有一条语句。我在网上看到的最受欢迎的是以下内容,但我读到它仅适用于SQL Server 2008: 如果此方法可与SQL Server 2005一起使用,我会更喜欢此方法,但我认为不会。根据我的阅读,另一个选项与INSERT之后的UNION ALL以下SELECT语句有关,这似乎很笨拙。有谁知道在

  • 问题内容: 我有以下查询: 并按预期得到以下结果: 有没有一种方法可以将上述结果复制到 另一个表中, 以便我的表看起来像这样? 我的问题是,可以预期任意数量的行,因此不确定如何遍历未知数量的行。 问题答案: 使用Eloquent或查询构建器在Laravel中进行批量插入确实很容易。 您可以使用以下方法。 在您的情况下,您已经在变量中包含了数据。

  • 问题内容: 我想编写脚本,具有对多个插入查询的功能。让我更好地解释一下。 我有一个html形式的输入。而且我有MySQL查询要插入到表中。所以我想让我的函数为“数量”次插入此查询。 例如要插入3次。有什么建议么? 问题答案: http://dev.mysql.com/doc/refman/5.5/zh- CN/insert.html

  • 我总共有10行这样的 PHP 我正在尝试在一个查询中插入数据库中的所有记录?我如何在一个查询中插入数据库中的所有行?

  • 问题内容: 当我尝试使用此查询时,我收到一条错误消息,指出Perameter电子邮件不存在,我确定变量:email,login_pass,payment_method,operateur是有效的并且存在。 我尝试删除引号,但我得到了 您的Sql语法有错误,请在第1行的’:email,:login_pass,:payment_method,:avecpuce)’附近查看与您的SQL Server对应

  • 问题内容: 我想轻松删除多个表,而无需在删除查询中实际列出表名,并且要删除的表的前缀为“ wp_” 问题答案: 只需分享其中一种解决方案: mysql> SELECT CONCAT(“ DROP TABLE”, GROUP_CONCAT(TABLE_NAME))as stmt 从information_schema.TABLES WHERE TABLE_SCHEMA =“ your_db_name