2017-09-05 147 views
1

我使用Laravel 5.4和我有一個存儲圖像在項目的公共文件夾,然後保存它的路徑插入數據庫項目列一個註冊方法,它現在的工作對:更新圖像路徑存儲laravel

public function salvar(Request $request){ 

    if ($request->hasFile('image')){ 

    $product = new Product(); 
    $id = Produto::max('id')+1; 

    $file = request()->file('image'); 
    $directoryImg = $file->storeAs('images/'. $id , 'image.jpg'); 

    $produto->description= $request->description; 
    $produto->cathegory = $request->cathegory; 
    $produto->price = $request->price; 
    $produto->image = $directoryImg; 
    $produto->save(); 
    } 
    else{ 
    $product = new Product(); 
    $product = $product->create($request->all()); 
    } 

    \Session::flash('mensage_success', 'Done!'); 
    return Redirect::to('products/new'); 
} 

問題是,當我使用另一種方法更新項目寄存器時,我更改的所有信息都會轉到數據庫,除了未存儲在路徑中的圖像和數據庫中的路徑本身之外。該字段在執行方法前保留其具有的值:

public function update($id, Request $request){ 
    $productEdit = Product::find($id); 

    if ($request->hasFile('image')){ 

    $file = request()->file('image'); 
    $directoryImg = $file->storeAs('images/' . $productEdit->id , 'image.jpg'); 

    $productEdit->image = $directoryImg; 
    $productEdit->description = $request->description; 
    $productEdit->cathegory = $request->cathegory; 
    $productEdit->price = $request->price; 

    $productEdit->save(); 

    } 
} 

return Redirect::to('products/'); 

有人可以幫我找到我在這裏丟失的東西嗎?

+1

$ productEdit->保存(),而不是$ produto –

+0

的$ produto保存()僅僅是一個拼寫錯誤。在原來的代碼中它已經是$ productEdit-> save()。大聲笑 –

+0

[編輯]有更多最新代碼的問題。 –

回答

0

它通常會保持相同的價值,不是嗎?因爲ID保持不變,這意味着圖像路徑將保持不變,因爲圖像名稱爲ID+image.jpg

嘗試更新之前刪除舊的圖像:

File::delete(public_path('images/' . $productEdit->id , 'image.jpg'));