回答編集履歴

6

`$request->hasFile(...)` というチェックを追加しました。

2021/02/11 07:31

投稿

Lulucom
Lulucom

スコア1899

test CHANGED
@@ -38,7 +38,9 @@
38
38
 
39
39
 
40
40
 
41
- if ($request->file('image')->isValid()) { // ファイルが存在し、アップロードに問題がなかった場合
41
+ if ($request->hasFile('image') && $request->file('image')->isValid()) {
42
+
43
+ // ファイルが存在し、アップロードに問題がなかった場合
42
44
 
43
45
  $path = $request->image->storePubliclyAs('/task', $stock_cosmetic->id . '.jpg', ['disk' => 's3']);
44
46
 

5

StockController@storeを修正しました。

2021/02/11 07:31

投稿

Lulucom
Lulucom

スコア1899

test CHANGED
@@ -32,17 +32,21 @@
32
32
 
33
33
  $stock_cosmetic->user_id = Auth::id();
34
34
 
35
+
36
+
37
+ $stock_cosmetic->save();
38
+
39
+
40
+
35
41
  if ($request->file('image')->isValid()) { // ファイルが存在し、アップロードに問題がなかった場合
36
42
 
37
43
  $path = $request->image->storePubliclyAs('/task', $stock_cosmetic->id . '.jpg', ['disk' => 's3']);
38
44
 
39
45
  $stock_cosmetic->image = $path;
40
46
 
47
+ $stock_cosmetic->save();
48
+
41
49
  }
42
-
43
-
44
-
45
- $stock_cosmetic->save();
46
50
 
47
51
  ```
48
52
 

4

StockController@storeのコード例を修正し、参考リンクも追記しました。

2021/02/11 06:59

投稿

Lulucom
Lulucom

スコア1899

test CHANGED
@@ -32,12 +32,20 @@
32
32
 
33
33
  $stock_cosmetic->user_id = Auth::id();
34
34
 
35
- $path = $request->image->storePubliclyAs('/task', $stock_cosmetic->id . '.jpg', ['disk' => 's3']);
35
+ if ($request->file('image')->isValid()) { // ファイルが存在し、アップロードに問題がなかった場合
36
36
 
37
+ $path = $request->image->storePubliclyAs('/task', $stock_cosmetic->id . '.jpg', ['disk' => 's3']);
38
+
37
- $stock_cosmetic->image = $path;
39
+ $stock_cosmetic->image = $path;
40
+
41
+ }
38
42
 
39
43
 
40
44
 
41
45
  $stock_cosmetic->save();
42
46
 
43
47
  ```
48
+
49
+
50
+
51
+ 参考: [ファイル](https://readouble.com/laravel/8.x/ja/requests.html#files)

3

追記した文の軽微な改善

2021/02/11 05:03

投稿

Lulucom
Lulucom

スコア1899

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- また、StockControllerクラスのstoreメソッドでも、S3でのパスをモデルに保存する必要ありそうです。
21
+ また、StockControllerクラスのstoreメソッドでも、S3でのパスをモデルのimageプロパティに保存する必要ありそうです。
22
22
 
23
23
 
24
24
 

2

StockController@storeの修正について追記しました。

2021/02/11 04:55

投稿

Lulucom
Lulucom

スコア1899

test CHANGED
@@ -11,3 +11,33 @@
11
11
  <img src="{{ Storage::disk('s3')->url("task/{$stock_cosmetic->id}.jpg") }}">
12
12
 
13
13
  ```
14
+
15
+
16
+
17
+ (追記)
18
+
19
+
20
+
21
+ また、StockControllerクラスのstoreメソッドでも、S3でのパスをモデルに保存する必要もありそうです。
22
+
23
+
24
+
25
+ ```php
26
+
27
+ $stock_cosmetic = new StockCosmetic();
28
+
29
+
30
+
31
+ $stock_cosmetic->color = $request->input('product');
32
+
33
+ $stock_cosmetic->user_id = Auth::id();
34
+
35
+ $path = $request->image->storePubliclyAs('/task', $stock_cosmetic->id . '.jpg', ['disk' => 's3']);
36
+
37
+ $stock_cosmetic->image = $path;
38
+
39
+
40
+
41
+ $stock_cosmetic->save();
42
+
43
+ ```

1

htmlにしてしまっていたのをphpに修正しました。

2021/02/11 04:54

投稿

Lulucom
Lulucom

スコア1899

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- ```html
9
+ ```php
10
10
 
11
11
  <img src="{{ Storage::disk('s3')->url("task/{$stock_cosmetic->id}.jpg") }}">
12
12