数据没有得到更新laravel 5.2

时间:2016-07-21 10:09:36

标签: php laravel-5 eloquent

我正在尝试更新特定表中的行,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 具有值。

2 个答案:

答案 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);  
}

希望有所帮助:)