2016-11-23 35 views
0

私はlaravelの学校プロジェクトに取り組んでいました。私は自分のデータベース内の既存のレコードを更新できるようにしたいと思います。しかし、私は更新ボタンを押しただけです私のdatabseのUpdated_atフィールドが更新され、編集フォームのすべての属性を変更しても、Laracastsのラーベールファンダメンタルズシリーズを監視して追跡しましたが、同じ結果が得られます。Laravel 5.2更新機能

これは私がこれはそれのためuingモデルのイムあること

public function update(Request $request, $id) 
    { 
     //$product = Product::findOrFail($id) = finding the Id of the Product i want to update 


     $product = Product::FindorFail($id); 

     // Requesting a update query on the attributes: name , buy price, sell price, and the foreign_key 
     $product->update($request->only(['naam', 'inkoopPrijs', 'verkoopPrijs', 'Fabrieken_Id'])); 

     return redirect(Route('producten.index')); 
    } 

のために作った私の店および編集方法です。

class Product extends Model 
{ 
    protected $fillable = ['Id', 'naam', 'inkoopPrijs', 'verkoopPrijs', 'Fabrieken_Id', 'updated_at', 'created_at']; 

     protected $table = "producten"; 


    public function fabriek() 
    { 
     return $this->BelongsTo('App\Fabriek', 'Fabrieken_Id'); 
    } 

私がvar_dump($ product)と言ったように、上記ではUpdated_at Fieldの更新だけと言っています。

https://laravel.com/docs/5.3/eloquent#updates:私はより多くの情報が必要な場合

ちょうどここに説明するよう更新方法は、MASSの更新ではなく、単一のレコードの更新のためである私が知っていると私は質問

答えて

1

にそれを追加します

必要なのは特定のレコードを更新するsave()です。リクエストデータの配列から更新するには、fill()と組み合わせることができます。

あなたはこのように記述する必要が
public function update(Request $request, $id) 
{ 
    $product = Product::FindorFail($id); 
    $product->fill($request->only(['naam', 'inkoopPrijs', 'verkoopPrijs', 'Fabrieken_Id'])); 
    $product->save(); 

    return redirect(Route('producten.index')); 
} 
0

public function update(Request $request, $id) 
{   
     $product = Product::find($id); 
     $product->name = $request->get('naam'); #naam : name of input field 
     $product->attribute2 = $request->get('inkoopPrijs'); 
     $product->attribute3 = $request->get('verkoopPrijs'); 
     $product->attribute4 = $request->get('Fabrieken_Id'); 

     $product->save(); 
     return redirect(Route('producten.index'));  
} 

それとも、メソッドを更新しますが、あなたの製品モデルにこの行を追加しておく -

protected $fillable = ['name', 'attribute2', 'attribute3', 'attribute4']; 

PS:あなたは、その後FindOrFailを使用している場合try catchを使用する必要があります

関連する問題