optional()
optional() は null安全演算子(Null Safe Operator) のようなもので、オブジェクトが null の場合でもメソッドやプロパティにアクセスしてエラーを回避できます。
optional() の基本的な使い方
$object = null;
echo optional($object)->name; // null (エラーなし)
🔹 $object が null でも ->name を呼び出してもエラーにならず null を返す。
Laravel で optional() を使う例
<img src="{{ asset('storage/' . optional($item)->image_path) }}" alt="商品画像">
$item が null でも optional($item)->image_path は null を返し、エラーにならない。
optional() と ?? を組み合わせる
<img src="{{ asset('storage/' . (optional($item)->image_path ?? 'noImage.jpg')) }}" alt="商品画像">
🔹 $item->image_path が null の場合、noImage.jpg を表示する。
画像の保存場所
Laravel で画像を保存する場合、基本的には storage/app/public/ に保存される。
storage/app/public/items/noImage.jpg
しかし、シンボリックリンクを作成することで、public/storage/ からアクセスできるようになる。
🔹 シンボリックリンクを作成
php artisan storage:link
🔹 公開アクセスできるパス
public/storage/任意フォルダ/noImage.jpg
このパスで asset() を使うと画像が表示されるようになる。
noImage.jpg の適切な保存場所
storage/app/public/任意のフォルダ/noImage.jpg # ✅ 保存場所
public/storage/任意のフォルダ/noImage.jpg # ✅ ここからアクセス
🔹 noImage.jpg を storage/app/public/items/ に保存し、Laravel の php artisan storage:link を実行すると、public/storage/items/ からアクセス可能になる。