【问题标题】:How to update multiple rows in existing table at once in laravel 8?如何在 laravel 8 中一次更新现有表中的多行?
【发布时间】:2022-01-17 19:42:26
【问题描述】:

我正在尝试更新现有表。多行值应该通过点击 laravel 8 中的保存按钮来更新。

在这里,我已将代码包含在存储控制器中。

 public function store(Request $request)
    {
             $infos = DB::table('data as dc')
                    ->where('dc.category_id', '=', 1)->select('*')
                    ->orderBy('dc.id')->get();
            $infos_count = count($infos);
    
            if ($infos){
                foreach ($infos as $info) {
                    $info->subject = $request->subject ? $request->subject : null;
                    $info->grade = $request->grade ? $request->grade : null;
                    $info->save();
                }
                Flash::success('updated successfully');
                return redirect('marksheet');
            } else {
                Flash::error('Failed to update');
                return redirect('marksheet');
            }
}

收到的错误是:

【问题讨论】:

  • 使用模型而不是查询构建器
  • 谢谢。使用模型工作

标签: laravel eloquent


【解决方案1】:

您收到错误是因为您尝试更新从数据库中获取的 stdClass 对象的集合。

试试这样:

DB::table('data')
    ->where('category_id', '=', 1)
    ->update([
        'subject' => $request->get('subject') ?? null,
        'grade' => $request->get('grade') ?? null
    ]);
Flash::success('updated successfully');

return redirect('marksheet');

这将更新您在数据库中的记录。为了数据库中有效插入的安全,可以使用database-transactions

您应该在docs 中阅读有关update() 的信息。

此外,使用模型而不是查询构建器更容易。您可以在docs 中阅读相关内容。

【讨论】:

    猜你喜欢
    • 2021-04-02
    • 2022-01-26
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    相关资源
    最近更新 更多