2016-07-21 139 views
0

我试图更新特定表中的一行,laravel不显示任何错误,但数据库中的值未更新。数据未得到更新laravel 5.2

这是我的更新方法的代码:

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

你可以查阅一下'$产品 - >取值ave();'返回? – TheFallen

+0

只是做了这个,并知道它是返回true。 –

+0

if($ product-> save()){ $ message =“True”; return response() - > json(['message'=> $ message],200); } –

回答

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

希望它能帮助:)

2

默认情况下,Laravel正在保护所有模型免受大规模分配漏洞的威胁。所以你必须指定一个$fillable(哪些字段可以修改)或$guarded(哪些字段不能修改)属性。

你的情况,将其添加到模型:

protected $fillable = [ 
    'productName', 
    'description', 
    'discount', 
    'inventory', 
];