2017-09-05 97 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'));