I would like to update image on Laravel.
Now:update method works though image hasn't been changed.
codes are below
Controller
$shop = Shop::find($id);
$shop->name = $request->input('name');
$shop->email = $request->input('email');
$shop->address = $request->input('address');
$shop->number = $request->input('number');
$shop->description = $request->input('description');
if($request->hasFile('image'))
{
$destination = 'storage/shops/' . $shop->image;
if(File::exists($destination))
{
File::delete($destination);
}
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = time(). '.' . $extension;
$file->move('storage/shops/', $filename);
$shop->image = $filename;
}
$shop->update();
return redirect()->route('shops');
Blade file are below
@foreach($shops as $shop)
<img src="{{ asset('storage/shops/' . $shop->image) }}"width="880" height="650" class="card" alt="No image" width="880" height="650">
<div class="card-body">
<h1 class="flex-auto text-lg font-semibold text-slate-900 text-center">
<a href="{{ route('shops_show', $shop->id) }}"><h5 class="card-title">{{ $shop->name }}</h5></a>
</h1>
<div class="w-full flex-none text-sm font-medium text-slate-700 mt-2 text-center">
<p class="card-text">{{ $shop->description }}</p>
</div>
</div>
@endforeach
I tried rewriting of slash or taking from DB of $destination but it doesn't work.
e.g. $destination = '/storage/shops/' . $shop->image;