Laravel如何更新单表单个字段?代码问题求助
Laravel 更新单个字段值的问题修复
你的代码问题出在update()方法的参数格式上:
- Laravel 的模型
update()方法要求传入关联数组,格式为['字段名' => 新值],而你传入的是索引数组['amount', $total_value],导致框架无法识别要更新的字段和对应值。
修正后的基础代码
$amount = Product::findorFail($request->products[$i]); $total_value = $request->amount[$i] + $amount->amount; // 使用关联数组传递更新字段与值 $amount->update(['amount' => $total_value]); dd($total_value);
更高效的写法(避免额外查询)
如果不需要使用模型实例的其他属性,可以直接用查询构造器在数据库层面完成累加,减少一次数据库查询,同时避免并发更新的数据覆盖问题:
use Illuminate\Support\Facades\DB; Product::where('id', $request->products[$i]) ->update([ 'amount' => DB::raw('amount + ?', [$request->amount[$i]]) ]);
这种写法对应的SQL就是你想要的:update products set amount = amount + ? where id = ?,完全符合需求。
内容的提问来源于stack exchange,提问作者laraCoder
相关产品推荐
相关产品推荐

