如何在 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.
中阅读相关内容
我正在尝试更新现有的 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.
中阅读相关内容