laravel 編集した時、変更していない画像の保持をしたい!
###使用環境
laravel 9
Laravel ui
composer
MacOS
PHP
JS使用せず
解決したいこと
編集後も画像の保持をしたい!
発生している問題・エラー
編集を行った際に、画像も変更すると上手く動作するのですが、
画像はそのままで、その他カラムを変更し保存すると、
セットされている画像カラムだけ削除され、画像の保持ができません。
(説明下手ですいません・・・。)
ProductController.php
public function update(ProductRequest $request, Product $product)
{
$request->validate([
'product_name' => 'required',
'company_id' => 'required',
'price' => 'required',
'stock' => 'required',
'comment' => 'nullable',
'img_path' => 'nullable|image|max:2048',
]);
$product->product_name = $request->product_name;
$product->company_id = $request->company_id;
$product->price = $request->price;
$product->stock = $request->stock;
$product->comment = $request->comment;
$product->img_path = $request->file('img_path');
$filePath = $product->img_path;
if(isset($product->img_path)){
\Storage::disk('public')->delete($filePath);
$filePath = $product->img_path;
if($request->hasFile('img_path')){
$filename = $request->img_path->getClientOriginalName();
$filePath = $request->img_path->storeAs('products', $filename, 'public');
$product->img_path = '/storage/' . $filePath;
}
}
編集の画像の部分は以下となります。
edit.blade.php
<div class="mb-3">
<label for="img_path" class="form-label">商品画像:</label>
<input id="img_path" type="file" name="img_path" class="form-control">
<img src="{{ asset($product->img_path) }}" alt="商品画像" width="100" class="product-image">
</div>
自分で試したこと
ストレージの画像削除まではおそらく動作しているかと思いますが、
画像を維持?というより、再度画像のパスを取得できていないのかなぁっと思ったりしています。
また、変更を加えなかえれば元々セットされている画像パスが残るようにできれば、そもそもこんなことを考えなくてもいいだろうなぁ・・・っとも思います
ただ検索してもあまりわからずご教授頂けますとさいわいです
よろしくお願いいたします
0