如何在 laravel 8 中一次更新现有 table 中的多行?

How to update multiple rows in existing table at once in laravel 8?

我正在尝试更新现有的 table。单击 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');
            }
}

收到的错误是:

您正在尝试更新从数据库中获取的 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.

中阅读相关内容