質問編集履歴

1

対象のコントローラーの誤りを修正と、違うエラーの発生についての編集

2020/05/12 02:40

投稿

Keight
Keight

スコア9

test CHANGED
@@ -1 +1 @@
1
- 【Laravel】退会していないのに「このユーザーは退会しました」と出てしまう
1
+ 【Laravel】退会していないのに「このユーザーは退会しました」と出てしまう、投稿ページにアクセスできない
test CHANGED
@@ -4,46 +4,248 @@
4
4
 
5
5
  ---
6
6
 
7
- **UsersController**
7
+ ~~**UsersController@show**~~
8
+
9
+
10
+
11
+ ~~public function show($id)~~
12
+
13
+ ~~{~~
14
+
15
+ ~~$user = User::find($id);~~
16
+
17
+ ~~$lectures = $user->lectures()->orderBy('created_at', 'desc')->paginate(4);~~
18
+
19
+
20
+
21
+ ~~$data = [~~
22
+
23
+ ~~'user' => $user,~~
24
+
25
+ ~~'lectures' => $lectures,~~
26
+
27
+ ~~]; return view('users.show', $data);~~
28
+
29
+ ~~}~~
30
+
31
+ 当初、上記のUsersControllerを載せていましたが、今回の対象はLecturesControllerでした、申し訳ありません。
32
+
33
+ ---
34
+
35
+
36
+
37
+ **LecturesController@show**
8
38
 
9
39
  ```PHP
10
40
 
11
- public function show($id)
41
+ public function show($id) {
12
-
42
+
43
+
44
+
13
- {
45
+ $lecture = Lecture::find($id);
14
46
 
15
47
  $user = User::find($id);
16
48
 
49
+
50
+
51
+ return view('lectures.show', [
52
+
53
+ 'lecture' => $lecture,
54
+
55
+ 'user' => $user,
56
+
57
+ ]);
58
+
59
+ }
60
+
61
+ ```
62
+
63
+
64
+
65
+ **lectures/show.blade.php**
66
+
67
+ ```HTML
68
+
69
+ @extends('layouts.app')
70
+
71
+
72
+
73
+ @section('content')
74
+
75
+
76
+
77
+ <div class="container">
78
+
79
+ <div class="head">レクチャー詳細</div>
80
+
81
+
82
+
83
+ <div class="row ml-3 mt-5 pt-4">
84
+
85
+
86
+
87
+ <div class="col-9 mx-auto">
88
+
89
+ <article class="cont_inner">
90
+
91
+ @if ($lecture)
92
+
93
+ @if ($lecture->image)
94
+
95
+ <figure class="show_post_thumbnail"><div class="new_area-img text-center"><img class="show_image" src="{{ asset('storage/'.$lecture->image) }}"></div></figure>
96
+
97
+ @else
98
+
99
+ <figure class="show_post_thumbnail"><div class="new_area-img text-center"><img src="../img/noimage.gif"></div></figure>
100
+
101
+ @endif
102
+
103
+ <section class="post_meta-all multiline line-8">
104
+
105
+ <div class="pick_title mb-2">{{ $lecture->title }}</div>
106
+
107
+ <time>{{ $lecture->updated_at }}</time>
108
+
109
+ <div>
110
+
111
+ @if ($lecture->category_name == 'ピッチング')
112
+
113
+ <span class="tag-pitching">{{ $lecture->category_name }}</span>
114
+
115
+ @elseif ($lecture->category_name == 'バッティング')
116
+
117
+ <span class="tag-batting">{{ $lecture->category_name }}</span>
118
+
119
+ @elseif ($lecture->category_name == '守備')
120
+
121
+ <span class="tag-fielding">{{ $lecture->category_name }}</span>
122
+
123
+ @elseif ($lecture->category_name == '走塁')
124
+
125
+ <span class="tag-running">{{ $lecture->category_name }}</span>
126
+
127
+ @elseif ($lecture->category_name == 'メンタル')
128
+
129
+ <span class="tag-mental">{{ $lecture->category_name }}</span>
130
+
131
+ @elseif ($lecture->category_name == 'その他')
132
+
133
+ <span class="tag-other">{{ $lecture->category_name }}</span>
134
+
135
+ @endif
136
+
137
+ @if ($user === null)
138
+
139
+ <span class="d-inline-block ml-2 small text-info">投稿者:このユーザーは退会しました</span></div>
140
+
141
+ @else
142
+
143
+ <span class="d-inline-block ml-2 small text-info">投稿者:<a href="{{ route('users.show', ['id' => $user->id]) }}">{{ $user->name }}</a></span></div>
144
+
145
+ @endif
146
+
147
+ <div class="mt-3 mb-5">{{ $lecture->content }}</div>
148
+
149
+ </section>
150
+
151
+ @endif
152
+
153
+ </article>
154
+
155
+ @if (Auth::id() === $lecture->user_id)
156
+
157
+ <div class="text-center mt-4">
158
+
159
+ {!! Form::open(['route' => ['lectures.destroy', $lecture->id], 'method' => 'delete']) !!}
160
+
161
+ {!! Form::submit('削除する', ['class' => 'btn btn-danger btn-sm del_check']) !!}
162
+
163
+ {!! Form::close() !!}
164
+
165
+ </div>
166
+
167
+ @endif
168
+
169
+ </div>
170
+
171
+ @endsection
172
+
173
+ ```
174
+
175
+
176
+
177
+
178
+
179
+ それと、「投稿する」のページにアクセスすると、エラーが出るようになりました。
180
+
181
+
182
+
183
+ ![イメージ説明](bba576f190aecfde21f09f1f03985668.gif)
184
+
185
+
186
+
187
+ 「このユーザーは退会しました」と出るものを修正しようと試みる前は問題なくアクセスできていたので、何かの拍子にそうなってしまったのかと思うのですが、ルーティングやコントローラーのcreate部分は特に触っていないですし、一応確認してみても、個人的には何らおかしいところは見受けられませんでした。
188
+
189
+
190
+
191
+ ---
192
+
193
+ **web.php**
194
+
195
+ ```PHP
196
+
197
+ // ユーザ機能
198
+
199
+ Route::group(['middleware' => ['auth']], function () {
200
+
17
- $lectures = $user->lectures()->orderBy('created_at', 'desc')->paginate(4);
201
+ Route::resource('users', 'UsersController', ['only' => ['show']]);
202
+
203
+ Route::get('lectures/create', 'LecturesController@create')->name('lectures.create');
204
+
205
+ Route::post('lectures', 'LecturesController@store')->name('lectures.store');
206
+
207
+ Route::delete('lectures/{id}', 'LecturesController@destroy')->name('lectures.destroy');
208
+
209
+ Route::delete('users/{id}', 'UsersController@destroy')->name('users.destroy');
210
+
211
+ });
212
+
213
+ ```
214
+
215
+
216
+
217
+ ---
218
+
219
+ **LecturesController@create**
220
+
221
+ ```PHP
222
+
223
+ public function create() {
18
224
 
19
225
 
20
226
 
21
- $data = [
22
-
23
- 'user' => $user,
227
+ $lecture = new Lecture;
228
+
229
+
230
+
24
-
231
+ return view('lectures.create', [
232
+
25
- 'lectures' => $lectures,
233
+ 'lecture' => $lecture,
26
-
234
+
27
- ]; return view('users.show', $data);
235
+ ]);
28
236
 
29
237
  }
30
238
 
31
239
  ```
32
240
 
241
+
242
+
33
- ---
243
+ ---
244
+
34
-
245
+ また、エラー内容を訳すと「非オブジェクトのプロパティ「user_id」を取得しようとしています」とのことで、tinkerにてあらためてLectureデータのカラムを確認しても、「user_id」は存在しています。
246
+
247
+ ![イメージ説明](34576aabe3e51611ffdbf7f0e1f98495.png)
248
+
249
+
250
+
35
- **lectures/show.blade.php**
251
+ いろいろとすみません、よろしくお願いいたしますm(_ _)m
36
-
37
- ```HTML
38
-
39
- @if ($user === null)
40
-
41
- <span class="d-inline-block ml-2 small text-info">投稿者:このユーザーは退会しました</span></div>
42
-
43
- @else
44
-
45
- <span class="d-inline-block ml-2 small text-info">投稿者:<a href="{{ route('users.show', ['id' => $user->id]) }}">{{ $user->name }}</a></span></div>
46
-
47
- @endif
48
-
49
- ```