laravelで画像の複数投稿機能を作成しています。
multipleではなくinput要素を増やす形で実装したいのですが、コントローラー側の処理を画像1件の状態から
どのように変更すれば良いのかが分かりません。
bladeの該当箇所は
PHP
1<div class="form-group"> 2 <input type="file" id="image1" name="image[]" accept=".png, .jpg, .jpeg, .pdf, .doc"> 3 <input type="file" id="image2" name="image[]" accept=".png, .jpg, .jpeg, .pdf, .doc"> 4 <input type="file" id="image3" name="image[]" accept=".png, .jpg, .jpeg, .pdf, .doc"> 5 <input type="file" id="image4" name="image[]" accept=".png, .jpg, .jpeg, .pdf, .doc"> 6</div>
コントローラーは、
PHP
1public function store(TaskRequest $request) 2 { 3 $task = new Task; 4 $form = $request->all(); 5 6 //画像の保存 7 if (isset($form['image'])) { 8 9 $path = $request->file('image')->store('public/image'); 10 $task->image = basename($path); 11 } else { 12 $task->image = null; 13 } 14 15 unset($form['_token']); 16 unset($form['image']); 17 18 $task->fill($form); 19 $task->user_id = $request->user()->id; 20 $task->save(); 21 $tasks = Task::orderBy('deadline', 'desc')->get(); 22 23 return redirect('user/tasks'); 24 25 }
となっております。
※追記
画像の保存が3枚中の3枚目しかできていないようです。
どこを修正すれば良いでしょうか?
下記dd()をした箇所とその結果です。
テーブル情報も記載いたします。
PHP
1public function store(TaskRequest $request) 2 { 3 // taskをデータベースに保存 4 $task = new Task; 5 $form = $request->except(["image", "_token"]); 6 $task->fill($form); 7 $task->user_id = $request->user()->id; 8 $task->save(); 9 $tasks = Task::orderBy('deadline', 'desc')->get(); 10 11 12 //画像の保存 13 $image = new Image; 14 $files = $request->file('image'); 15 16 dd($files); 17 18 foreach($files as $file){ 19 $image->name = $file->getClientOriginalName(); 20 $file->store('public/image'); 21 //ファイルのパスの名前の保存 22 // $image->name = basename($image); 23 $image->task_id = $task->id; 24 25 $image->save(); 26 27 } 28 // dd($image); 29 30 return redirect('user/tasks/'); 31 32 //select * from taskmanagement.tasks; 33 34 }
dd()
1array:3 [▼ 2 0 => Illuminate\Http\UploadedFile {#1402 ▼ 3 -test: false 4 -originalName: "456013_s.jpg" 5 -mimeType: "image/jpeg" 6 -error: 0 7 #hashName: null 8 path: "/tmp" 9 filename: "php60mWyv" 10 basename: "php60mWyv" 11 pathname: "/tmp/php60mWyv" 12 extension: "" 13 realPath: "/tmp/php60mWyv" 14 aTime: 2022-02-04 09:49:01 15 mTime: 2022-02-04 09:49:01 16 cTime: 2022-02-04 09:49:01 17 inode: 262491 18 size: 199954 19 perms: 0100600 20 owner: 501 21 group: 501 22 type: "file" 23 writable: true 24 readable: true 25 executable: false 26 file: true 27 dir: false 28 link: false 29 } 30 1 => Illuminate\Http\UploadedFile {#1401 ▼ 31 -test: false 32 -originalName: "3055088_s.jpg" 33 -mimeType: "image/jpeg" 34 -error: 0 35 #hashName: null 36 path: "/tmp" 37 filename: "php8tc8sS" 38 basename: "php8tc8sS" 39 pathname: "/tmp/php8tc8sS" 40 extension: "" 41 realPath: "/tmp/php8tc8sS" 42 aTime: 2022-02-04 09:49:01 43 mTime: 2022-02-04 09:49:01 44 cTime: 2022-02-04 09:49:01 45 inode: 262499 46 size: 301046 47 perms: 0100600 48 owner: 501 49 group: 501 50 type: "file" 51 writable: true 52 readable: true 53 executable: false 54 file: true 55 dir: false 56 link: false 57 } 58 2 => Illuminate\Http\UploadedFile {#1400 ▼ 59 -test: false 60 -originalName: "22898799_s.jpg" 61 -mimeType: "image/jpeg" 62 -error: 0 63 #hashName: null 64 path: "/tmp" 65 filename: "phpAGEnnf" 66 basename: "phpAGEnnf" 67 pathname: "/tmp/phpAGEnnf" 68 extension: "" 69 realPath: "/tmp/phpAGEnnf" 70 aTime: 2022-02-04 09:49:01 71 mTime: 2022-02-04 09:49:01 72 cTime: 2022-02-04 09:49:01 73 inode: 262503 74 size: 367696 75 perms: 0100600 76 owner: 501 77 group: 501 78 type: "file" 79 writable: true 80 readable: true 81 executable: false 82 file: true 83 dir: false 84 link: false 85 } 86]
PHP
1public function store(TaskRequest $request) 2 { 3 // taskをデータベースに保存 4 $task = new Task; 5 $form = $request->except(["image", "_token"]); 6 $task->fill($form); 7 $task->user_id = $request->user()->id; 8 $task->save(); 9 $tasks = Task::orderBy('deadline', 'desc')->get(); 10 11 12 //画像の保存 13 $image = new Image; 14 $files = $request->file('image'); 15 16 // dd($files); 17 18 foreach($files as $file){ 19 $image->name = $file->getClientOriginalName(); 20 $file->store('public/image'); 21 //ファイルのパスの名前の保存 22 // $image->name = basename($image); 23 $image->task_id = $task->id; 24 25 $image->save(); 26 27 } 28 dd($image); 29 30 return redirect('user/tasks/'); 31 32 //select * from taskmanagement.tasks; 33 34 }
dd()
1App\Models\Image {#1398 ▼ 2 #connection: "mysql" 3 #table: null 4 #primaryKey: "id" 5 #keyType: "int" 6 +incrementing: true 7 #with: [] 8 #withCount: [] 9 #perPage: 15 10 +exists: true 11 +wasRecentlyCreated: true 12 #attributes: array:5 [▼ 13 "name" => "22898799_s.jpg" 14 "task_id" => 96 15 "updated_at" => "2022-02-04 09:50:29" 16 "created_at" => "2022-02-04 09:50:29" 17 "id" => 18 18 ] 19 #original: array:5 [▼ 20 "name" => "22898799_s.jpg" 21 "task_id" => 96 22 "updated_at" => "2022-02-04 09:50:29" 23 "created_at" => "2022-02-04 09:50:29" 24 "id" => 18 25 ] 26 #changes: array:1 [▼ 27 "name" => "22898799_s.jpg" 28 ] 29 #casts: [] 30 #classCastCache: [] 31 #dates: [] 32 #dateFormat: null 33 #appends: [] 34 #dispatchesEvents: [] 35 #observables: [] 36 #relations: [] 37 #touches: [] 38 +timestamps: true 39 #hidden: [] 40 #visible: [] 41 #fillable: [] 42 #guarded: array:1 [▼ 43 0 => "*" 44 ] 45}
アドバイスの程どうかよろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー