2016-07-21 4 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

вы можете проверить, что '$ продукт-> s ave(); 'возвращается? – TheFallen

+0

просто сделал это и узнал, что он возвращается. –

+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', 
]; 
Смежные вопросы