2016-07-21 186 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', 
];