2017-08-18 13 views
0

私はLaravelの新機能ですので、いくつかの基本を学びたいと思っています。私はファイルアップロードでCRUDを作成することができました。私がしたことは、リソースコントローラを作成したことです。マイストア方法:Laravel 5.4 - ファイルレコードを更新する

public function store(Request $request) { 

     $this->validate($request, [ 
      'name' => 'required', 
      'avatar' => 'required|image|mimes:jpeg,png,jpg,gif,svg', 
      'boat_type' => 'required', 
      'rooms' => 'required', 
      'price_per_hour' => 'required', 
      'price' => 'required', 
     ]); 
     $boat = new Boat($request->input()) ; 
      if($file = $request->hasFile('avatar')) { 
       $file = $request->file('avatar') ; 
       $fileName = $file->getClientOriginalName() ; 
       $destinationPath = public_path().'/img/boats/avatars/' ; 
       $file->move($destinationPath,$fileName); 
       $boat->avatar = $fileName ; 
      } 
      $boat->save() ; 
      return redirect()->route('management.index') 
         ->with('success','New Boat Successfully Added!'); 
    } 

この方法は、私は私のデータベースに詳細をアップロードして保存することができていますし、私の見解では、それを操作することができるよこれで、完全に正常に動作します。

私はUPDATEメソッドを使用しようとすると、私は正確なコードを持っています。私の投稿を更新しようとすると、私のアバター変数以外はすべて更新できます。それを更新しますが、それを奇妙な形式で保存します。私はアバターの変数を編集するときここに私のUPDATEメソッドは

public function update(Request $request, $id) 
    { 
     $this->validate($request, [ 
      'name' => 'required', 
      'boat_type' => 'required', 
      'rooms' => 'required', 
      'price_per_hour' => 'required', 
      'price' => 'required', 
     ]); 

     $boat = Boat::find($id); 
     if($file = $request->hasFile('avatar')) { 
       $file = $request->file('avatar') ; 
       $fileName = $file->getClientOriginalName() ; 
       $destinationPath = public_path().'/img/boats/avatars/' ; 
       $file->move($destinationPath,$fileName); 
       $boat->avatar = $fileName ; 
      } 
      $boat->save() ; 
     $boat_update = $request->all(); 
     $boat->update($boat_update); 
     $request->session()->flash('alert-success', 'Boat Successfully Updated!'); 
     return redirect('/management'); 
    } 

あり、それは私が間違っているものを本当にわからないんだけど/img/boats/avatars/C:\xampp\tmp\phpFA50.tmp

に格納します。どんな助けでも大歓迎です。

答えて

0
  1. $boat->save() ;あなたは、更新前に保存する必要はありません - >

  2. $boat_update = $request->all();それを削除 - >あなたのファイル名が

  3. $boat->update($boat_update);していないすべてのフィールド$fillableていますか?はい、あなたは

0

は解決策を見つけた私は単に$request->all()

正しいとそれを上書きし、ファイル名を保存したとして、それはかなり論理エラーだったその配列に新しいファイル名を追加する必要がある場合これは次のようになります。

$boat = Boat::find($id); 
$boat->fill($request->except('avatar')); 
if($file = $request->hasFile('avatar')) { 
    $file = $request->file('avatar') ; 
    $fileName = $file->getClientOriginalName() ; 
    $destinationPath = public_path().'/img/boats/avatars/' ; 
    $file->move($destinationPath,$fileName); 
    $boat->avatar = $fileName ; 
} 
$boat->save(); 

$request->session()->flash('alert-success', 'Boat Successfully Updated!'); 
return redirect('/management');` 
関連する問題