php artisan storage:linkでリンクされるパスがおかしい

laravelにて画像をstore()して保存する際に

store('public/img')

とすると画像はstorage/app/public/imgに保存されます。
またこれをデータベースに保存するために

$img = new Image(); $img->path = $request->file()->store('public/img')

と記述します、この場合データベースには
public/img/ランダムパス
と保存されます。
ここでリンクを作成するとなぜかpublic下に作成されるstorageファイル構造が
public/storage/img/
になります。これだとどう足掻いても写真がデータベースに保存してあるパスを使って取り出せません。かと言って保存時にpublicを指定しないと別個でimgファイルをapp直下に作ってpublicに入りません。何がいけないのでしょうか?

ケース別にまとめるとこうです
store('public/img')の場合:
storage/app/public/imgに保存
リンクはpublic/storage/img
データベースに保存されたパスはpublic/img/~~
この場合画像をビューで取り出そうとするとパスが
プロジェクト名/public/storage/img/~~となり取り出せません

store('img')の場合:
storage/app/imgに保存
リンクはしてもstorageフォルダは作成されない
データベースに保存されたパスはimg/~~
この場合画像がstorage/app/public直下ではないためビューで取り出せません

よろしくお願いいたします。

コメントを投稿

0 コメント