我正在尝试更新特定表中的行,laravel没有显示任何错误,但数据库中的值没有更新。
这是我的更新方法代码:
function update(Request $request){
$product=product::find($request['Id']);
$product->productName=$request['name'];
$product->description=$request['desc'];
$product->discount=$request['discount'];
$product->inventory=$request['inventory'];
$product->save();
return response()->json(['message'=>$product->productName],200);
}
我成功获取了所有数据,并且检查了我更改了响应值json
变量$product->productName
也会显示save()
方法后出现的更新值,但数据库中没有任何变化。
问题在于这段代码,因为我检查了我的模型,即产品及其工作正常,因为$product
具有值。
答案 0 :(得分:2)
默认情况下,Laravel正在保护所有模型免受质量分配漏洞的影响。因此,您必须指定$fillable
(可以修改哪些字段)或$guarded
(哪些字段无法修改)属性。
在您的情况下,将其添加到模型中:
protected $fillable = [
'productName',
'description',
'discount',
'inventory',
];
答案 1 :(得分:0)
您是不是要更新此记录吗?
为什么使用save()
方法,为什么不使用update()
,因为您尝试使用新的一组值设置给定的产品?:
$product->update();
所以你最终可以(建议检查产品是否存在以及更新是否成功 - 如果你愿意,你可以忽略它):
function update(Request $request)
{
if(!$product=product::find($request['Id']))
{
return response()->json('Product does not exist', 404);
}
$product->productName=$request['name'];
$product->description=$request['desc'];
$product->discount=$request['discount'];
$product->inventory=$request['inventory'];
if($product->update())
{
return response()->json(['message'=>$product->productName],200);
}
return response()->json('Something went wrong', 500);
}
希望有所帮助:)