【问题标题】:How to post lots of data to laravel database如何将大量数据发布到 laravel 数据库
【发布时间】:2021-10-22 21:55:29
【问题描述】:

我正在尝试将此数据提交到 Laravel 中的数据库。我的意图是同时提交所有内容,这只是两行,但我想将它们一起发送,即使我可以提交 10 行。

0: {item: "Electronics", subitem: "Laptop", subitem2: "Hard D", unit: "Length - meter (m)"}
1: {item: "Electronics", subitem: "Laptop", subitem2: "Hard D", unit: "Length - meter (m)"}

我尝试过的

  for ($i = 1; $i < count($request->all()); $i++) {

    $answers[] = [
        'item' => $request->item[$i],
        'subitem' => $request->subitem[$i],
        'subitem2' => $request->subitem2[$i]
    ];

我尝试使用上面的代码做一个 for 循环,但它不起作用..得到以下错误

count(): Parameter must be an array or an object that implements Countable

【问题讨论】:

  • 这能回答你的问题吗? Insert array values into database in laravel
  • no 不起作用..我编辑了我的问题以显示我现在尝试的内容
  • 你不要试图用你的代码插入任何东西,你只是把所有东西放在一个数组中并嵌套。保存所有这些数据的请求字段是什么?
  • 你能分享一下你的意思吗?
  • 在您的问题中,您提到要进行批量插入,例如在数据库中插入大数据。所以我有2个问题。您的模型的插入查询在哪里,包含所有这些数据的确切请求字段名称是什么? request->all() 没有验证,太笼统了。

标签: php laravel laravel-5


【解决方案1】:

因此,在 cmets 中讨论后,您想要实现的解决方案可以是:

foreach ($request->all() as $data){
  Items::insert([
       'item' => $data['item'],
       'subitem' => $data['subitem'],
       'subitem2' => $data['subitem2'],
       'unit' => $data['unit']
  ]);
}

如果您没有模型,并且您确实使用 DB 外观插入,那么您可以这样做:

  DB::table('items')->insert([
       'item' => $data['item'],
       'subitem' => $data['subitem'],
       'subitem2' => $data['subitem2'],
       'unit' => $data['unit']
  ]);

但是你必须建立专门的模型。

您还需要验证您的输入,$request-&gt;all() 过于笼统,但这是对未来改进的建议,需要牢记。

不要相信用户从前端发送的数据。后端应始终进行验证。

【讨论】:

  • 让我试试这个,现在就回来
  • 很高兴我能帮上忙。如果这是您问题的答案,请将我的答案标记为已接受,以供未来有类似问题的用户使用,并阅读我为未来改进而做的注释。
  • 我想标记但它说我不能标记..我想是因为我的帐户是新的
  • 我想你可以在几分钟后标记它,但不确定有多少。
【解决方案2】:

在此处查看 laravel 文档: https://laravel.com/docs/8.x/queries#insert-statements

这是他们用于插入多条记录的示例

DB::table('users')->insert([
    ['email' => 'picard@example.com', 'votes' => 0],
    ['email' => 'janeway@example.com', 'votes' => 0],
]);

【讨论】:

  • 这多条记录不是硬编码的。它们是从 api 进来的
猜你喜欢
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
  • 2018-10-03
  • 2017-02-14
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多