laravel5.5 にてユーザがloginしprofile画像をupload
//省略しますが画像を保存する部分のコードです $image->save(public_path() . '/images/teachers/'. Auth::user()->id.'-'.$file);
保存先は(例)public/images/teachers/4-hoge.jpg
という感じになります。
ここでhtml側での表示
{!! Html::image('images/teachers/4-'(ここをどう書けば??),'profile', array('class' => 'thumb', 'width' => 235)) !!}
コード内にも記載しましたが、path指定部分にどう書いたらよいか?
→正規表現を使用するのだと思うのだが、preg_matchを使ってもtrueかfalseで返ってくるので意味はない。。
→DBに保存したら簡単に取ってこれるが、https://teratail.com/questions/81233 のページにもあるように画像をDBに保存する意味はほとんどない
→file serverに保存。
しかしその場合には指定したuserごとの画像を取ってくる方法が分からず困っております。
よろしくお願いいたします。
質問を受けての追記
例えば「メインのプロフィール画像」「そのほかプロフィール画像」「userがそれぞれ投稿するブログの画像」
の3つを扱いたい場合はImageテーブルに下記カラムを作成
id(autoincrement) user_id(Userモデルとリレーション) blog_id(Blogモデルとリレーション) profile_main_name profile_sub_name blog_name
保存するパスはそれぞれ
//一日ごとにディレクトりがどんどん作られるということですよね?? profile/images/teachers/profile/main/YYYY/MM/DD profile/images/teachers/profile/sub/YYYY/MM/DD profile/images/teachers/blog/YYYY/MM/DD
(また違うユーザが同じ日に同じ名前のファイルをuploadする可能性があるので、ファイル名の最初にAuth::user()->id; でとってきた値を挿入する必要有?)
そして表示するときは
・メインprofile画像
→ {!! Html::image("images/teachers/profile/main/.{{$user->image->profile_main_name}}.","profile" !!}
・サブprofile画像
→ 上記をforeachでまわす(profile_main_name→profile_sub_nameに変更)
・ブログ画像
→ {!! Html::image("images/teachers/blog/.{{$blog->image->blog_name}}.","pic" !!}
という感じになるのでしょうか?
またこれだとパスに日付を入れる意味が「ただ見たらいつupされたかがわかる」になり回答者様の意図と違ってしまいますが。。
そのあたりも含めまだ設計で曖昧な部分があります、申し訳ございませんが、よろしくお願いいたします。
質問を受けての追記②
①
return Image::create([ 'name' => "$fileName", ]);
このコードによりimagesテーブルにfile名(unip()でとった値)がinsert
→image_userのimage_id&user_idにもinsertが必要かと思いますがただ省略されているだけですよね???
②$path = 'public/images/' .date('Y/m/d/', strtotime($user->images[0]->created_at)) . "$image->name";
$image->nameでloginしているユーザのidを取ってこれるのか???
→controller側で
```
$user = Auth::user()->id;
$image = DB::table('images')
->where('id', '<>', $user)
->groupBy('status')
->get();
いやしかしこれだとimagesのidはただauto_incrementで入ってる数値なので意味がない・・ すみません、たぶん何かおおいなる勘違いをしているような気がしますが、、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/21 02:11 編集
2018/04/21 02:45
2018/04/21 04:37 編集
2018/04/21 05:10