質問編集履歴

2

言語の修正

2020/10/15 12:14

投稿

KOSUKE.
KOSUKE.

スコア6

test CHANGED
File without changes
test CHANGED
@@ -586,7 +586,7 @@
586
586
 
587
587
  ・favorites.blade
588
588
 
589
- ```Laravel
589
+ ```PHP
590
590
 
591
591
  @extends('layouts.app')
592
592
 
@@ -624,7 +624,7 @@
624
624
 
625
625
  ・favoriteUsers.blade
626
626
 
627
- ```Laravel
627
+ ```PHP
628
628
 
629
629
  @if (count($favoritePosts) > 0)
630
630
 

1

言語名変更

2020/10/15 12:14

投稿

KOSUKE.
KOSUKE.

スコア6

test CHANGED
File without changes
test CHANGED
@@ -24,648 +24,648 @@
24
24
 
25
25
  ・MicropostsController
26
26
 
27
+ ```PHP
28
+
29
+ <?php
30
+
31
+
32
+
33
+ namespace App\Http\Controllers;
34
+
35
+
36
+
37
+ use Illuminate\Http\Request;
38
+
39
+
40
+
41
+ class MicropostsController extends Controller
42
+
43
+ {
44
+
45
+ 〜省略〜
46
+
47
+
48
+
49
+ public function favorite_users()
50
+
51
+ {
52
+
53
+ // 第一引数:得られるmodelクラス、第二引数:中間テーブル、第三引数:自分のidを示すカラム、第四引数:相手のidを示すカラム
54
+
55
+ return $this->belongsToMany(User::class, 'favorite', 'micropost_id', 'user_id' )->withTimestamps();
56
+
57
+ }
58
+
59
+
60
+
61
+ public function favoriteIndex()
62
+
63
+ {
64
+
65
+ $data = [];
66
+
67
+ if (\Auth::check()) { // 認証済みの場合
68
+
69
+ // 認証済みユーザを取得
70
+
71
+ $user = \Auth::user();
72
+
73
+ // お気に入り投稿の一覧を作成日時の降順で取得
74
+
75
+ $favoritePosts = $user->feed_favoriteMicroposts()->orderBy('created_at', 'desc')->paginate(10);
76
+
77
+
78
+
79
+ $data = [
80
+
81
+ 'user' => $user,
82
+
83
+ 'favoritePosts' => $favoritePosts,
84
+
85
+ ];
86
+
87
+ }
88
+
89
+
90
+
91
+ // Welcomeビューでそれらを表示
92
+
93
+ return view('users.navtabs', $data);
94
+
95
+ }
96
+
97
+
98
+
99
+
100
+
101
+ }
102
+
103
+
104
+
105
+ ```
106
+
107
+ ・User.php
108
+
109
+ ```PHP
110
+
111
+ <?php
112
+
113
+
114
+
115
+ <?php
116
+
117
+
118
+
119
+ namespace App;
120
+
121
+
122
+
123
+ use Illuminate\Contracts\Auth\MustVerifyEmail;
124
+
125
+ use Illuminate\Foundation\Auth\User as Authenticatable;
126
+
127
+ use Illuminate\Notifications\Notifiable;
128
+
129
+
130
+
131
+ class User extends Authenticatable
132
+
133
+ {
134
+
135
+ use Notifiable;
136
+
137
+
138
+
139
+ /**
140
+
141
+ * The attributes that are mass assignable.
142
+
143
+ *
144
+
145
+ * @var array
146
+
147
+ */
148
+
149
+ protected $fillable = [
150
+
151
+ 'name', 'email', 'password',
152
+
153
+ ];
154
+
155
+
156
+
157
+ /**
158
+
159
+ * The attributes that should be hidden for arrays.
160
+
161
+ *
162
+
163
+ * @var array
164
+
165
+ */
166
+
167
+ protected $hidden = [
168
+
169
+ 'password', 'remember_token',
170
+
171
+ ];
172
+
173
+
174
+
175
+ /**
176
+
177
+ * The attributes that should be cast to native types.
178
+
179
+ *
180
+
181
+ * @var array
182
+
183
+ */
184
+
185
+ protected $casts = [
186
+
187
+ 'email_verified_at' => 'datetime',
188
+
189
+ ];
190
+
191
+
192
+
193
+ /**
194
+
195
+ * このユーザが所有する投稿。( Micropostモデルとの関係を定義)
196
+
197
+ */
198
+
199
+ public function microposts()
200
+
201
+ {
202
+
203
+ return $this->hasMany(Micropost::class);
204
+
205
+ }
206
+
207
+
208
+
209
+ /**
210
+
211
+ * このユーザに関係するモデルの件数をロードする。
212
+
213
+ */
214
+
215
+ public function loadRelationshipCounts()
216
+
217
+ {
218
+
219
+ $this->loadCount(['microposts', 'followings', 'followers','favorites']);
220
+
221
+ }
222
+
223
+
224
+
225
+
226
+
227
+ /**
228
+
229
+ * このユーザがフォロー中のユーザ。( Userモデルとの関係を定義)
230
+
231
+ */
232
+
233
+ public function followings()
234
+
235
+ {
236
+
237
+ return $this->belongsToMany(User::class, 'user_follow', 'user_id', 'follow_id')->withTimestamps();
238
+
239
+ }
240
+
241
+
242
+
243
+ /**
244
+
245
+ * このユーザをフォロー中のユーザ。( Userモデルとの関係を定義)
246
+
247
+ */
248
+
249
+ public function followers()
250
+
251
+ {
252
+
253
+ return $this->belongsToMany(User::class, 'user_follow', 'follow_id', 'user_id')->withTimestamps();
254
+
255
+ }
256
+
257
+
258
+
259
+ /**
260
+
261
+ * $userIdで指定されたユーザをフォローする。
262
+
263
+ *
264
+
265
+ * @param int $userId
266
+
267
+ * @return bool
268
+
269
+ */
270
+
271
+ public function follow($userId)
272
+
273
+ {
274
+
275
+ // すでにフォローしているかの確認
276
+
277
+ $exist = $this->is_following($userId);
278
+
279
+ // 相手が自分自身かどうかの確認
280
+
281
+ $its_me = $this->id == $userId;
282
+
283
+
284
+
285
+ if ($exist || $its_me) {
286
+
287
+ // すでにフォローしていれば何もしない
288
+
289
+ return false;
290
+
291
+ } else {
292
+
293
+ // 未フォローであればフォローする
294
+
295
+ $this->followings()->attach($userId);
296
+
297
+ return true;
298
+
299
+ }
300
+
301
+ }
302
+
303
+
304
+
305
+ /**
306
+
307
+ * $userIdで指定されたユーザをアンフォローする。
308
+
309
+ *
310
+
311
+ * @param int $userId
312
+
313
+ * @return bool
314
+
315
+ */
316
+
317
+ public function unfollow($userId)
318
+
319
+ {
320
+
321
+ // すでにフォローしているかの確認
322
+
323
+ $exist = $this->is_following($userId);
324
+
325
+ // 相手が自分自身かどうかの確認
326
+
327
+ $its_me = $this->id == $userId;
328
+
329
+
330
+
331
+ if ($exist && !$its_me) {
332
+
333
+ // すでにフォローしていればフォローを外す
334
+
335
+ $this->followings()->detach($userId);
336
+
337
+ return true;
338
+
339
+ } else {
340
+
341
+ // 未フォローであれば何もしない
342
+
343
+ return false;
344
+
345
+ }
346
+
347
+ }
348
+
349
+
350
+
351
+ /**
352
+
353
+ * 指定された $userIdのユーザをこのユーザがフォロー中であるか調べる。フォロー中ならtrueを返す。
354
+
355
+ *
356
+
357
+ * @param int $userId
358
+
359
+ * @return bool
360
+
361
+ */
362
+
363
+ public function is_following($userId)
364
+
365
+ {
366
+
367
+ // フォロー中ユーザの中に $userIdのものが存在するか
368
+
369
+ return $this->followings()->where('follow_id', $userId)->exists();
370
+
371
+ }
372
+
373
+
374
+
375
+ public function feed_microposts()
376
+
377
+ {
378
+
379
+ // このユーザがフォロー中のユーザのidを取得して配列にする
380
+
381
+ $userIds = $this->followings()->pluck('users.id')->toArray();
382
+
383
+ // このユーザのidもその配列に追加
384
+
385
+ $userIds[] = $this->id;
386
+
387
+ // それらのユーザが所有する投稿に絞り込む
388
+
389
+ return Micropost::whereIn('user_id', $userIds);
390
+
391
+ }
392
+
393
+
394
+
395
+ /**
396
+
397
+ * このユーザがお気に入りの投稿。( Userモデルとの関係を定義)
398
+
399
+ */
400
+
401
+ public function favorites()
402
+
403
+ {
404
+
405
+ // 第一引数:得られるmodelクラス、第二引数:中間テーブル、第三引数:自分のidを示すカラム、第四引数:相手のidを示すカラム
406
+
407
+ return $this->belongsToMany(Micropost::class, 'favorite', 'user_id', 'micropost_id')->withTimestamps();
408
+
409
+ }
410
+
411
+
412
+
413
+ public function favorite($userId)
414
+
415
+ {
416
+
417
+ // すでにフォローしているかの確認
418
+
419
+ $exist = $this->is_favorite($userId);
420
+
421
+ // 相手が自分自身かどうかの確認
422
+
423
+ $its_me = $this->id == $userId;
424
+
425
+
426
+
427
+ if ($exist || $its_me) {
428
+
429
+ // すでにフォローしていれば何もしない
430
+
431
+ return false;
432
+
433
+ } else {
434
+
435
+ // 未フォローであればフォローする
436
+
437
+ $this->favorites()->attach($userId);
438
+
439
+ return true;
440
+
441
+ }
442
+
443
+ }
444
+
445
+
446
+
447
+ public function unfavorite($userId)
448
+
449
+ {
450
+
451
+ // すでにフォローしているかの確認
452
+
453
+ $exist = $this->is_favorite($userId);
454
+
455
+ // 相手が自分自身かどうかの確認
456
+
457
+ $its_me = $this->id == $userId;
458
+
459
+
460
+
461
+ if ($exist && !$its_me) {
462
+
463
+ // すでにフォローしていればフォローを外す
464
+
465
+ $this->favorites()->detach($userId);
466
+
467
+ return true;
468
+
469
+ } else {
470
+
471
+ // 未フォローであれば何もしない
472
+
473
+ return false;
474
+
475
+ }
476
+
477
+ }
478
+
479
+
480
+
481
+ public function is_favorite($userId)
482
+
483
+ {
484
+
485
+ // フォロー中ユーザの中に $userIdのものが存在するか
486
+
487
+ return $this->favorites()->where('micropost_id', $userId)->exists();
488
+
489
+ }
490
+
491
+
492
+
493
+ public function feed_favoriteMicroposts()
494
+
495
+ {
496
+
497
+ // favoriteテーブに記録されているuser_idを取得
498
+
499
+ $userIds = $this->favorites()->pluck('favorite.user_id')->toArray();
500
+
501
+ // Micropostテーブルのデータのうち、$userIDs配列のいずれかと合致するuser_idをもつものを返す。
502
+
503
+ return Micropost::whereIn('user_id', $userIds);
504
+
505
+ // favoriteテーブに記録されているmicropost_idを取得
506
+
507
+ $postIds = $this->favorites()->pluck('favorite.micropost_id')->toArray();
508
+
509
+ // Micropostテーブルのデータのうち、$postIds配列のいずれかと合致するidをもつものを返す。
510
+
511
+ return Micropost::whereIn('id', $postIds);
512
+
513
+ }
514
+
515
+ }
516
+
517
+
518
+
519
+ ```
520
+
521
+ ・navtabs.blade
522
+
523
+ ```PHP
524
+
525
+ <ul class="nav nav-tabs nav-justified mb-3">
526
+
527
+ {{-- ユーザ詳細タブ --}}
528
+
529
+ <li class="nav-item">
530
+
531
+ <a href="{{ route('users.show', ['user' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.show') ? 'active' : '' }}">
532
+
533
+ TimeLine
534
+
535
+ <span class="badge badge-secondary">{{ $user->microposts_count }}</span>
536
+
537
+ </a>
538
+
539
+ </li>
540
+
541
+ {{-- フォロー一覧タブ --}}
542
+
543
+ <li class="nav-item">
544
+
545
+ <a href="{{ route('users.followings', ['id' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.followings') ? 'active' : '' }}">
546
+
547
+ Followings
548
+
549
+ <span class="badge badge-secondary">{{ $user->followings_count }}</span>
550
+
551
+ </a>
552
+
553
+ </li>
554
+
555
+ {{-- フォロワー一覧タブ --}}
556
+
557
+ <li class="nav-item">
558
+
559
+ <a href="{{ route('users.followers', ['id' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.followers') ? 'active' : '' }}">
560
+
561
+ Followers
562
+
563
+ <span class="badge badge-secondary">{{ $user->followers_count }}</span>
564
+
565
+ </a>
566
+
567
+ </li>
568
+
569
+ {{-- お気に入り一覧タブ --}}
570
+
571
+ <li class="nav-item">
572
+
573
+ <a href="{{ route('users.favorites', ['id' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.favorites') ? 'active' : '' }}">
574
+
575
+ Favorite
576
+
577
+ <span class="badge badge-secondary">{{ $user->favorites_count }}</span>
578
+
579
+ </a>
580
+
581
+ </li>
582
+
583
+ </ul>
584
+
585
+ ```
586
+
587
+ ・favorites.blade
588
+
27
589
  ```Laravel
28
590
 
29
- <?php
30
-
31
-
32
-
33
- namespace App\Http\Controllers;
34
-
35
-
36
-
37
- use Illuminate\Http\Request;
38
-
39
-
40
-
41
- class MicropostsController extends Controller
42
-
43
- {
44
-
45
- 〜省略〜
46
-
47
-
48
-
49
- public function favorite_users()
591
+ @extends('layouts.app')
50
-
51
- {
592
+
52
-
53
- // 第一引数:得られるmodelクラス、第二引数:中間テーブル、第三引数:自分のidを示すカラム、第四引数:相手のidを示すカラム
593
+
54
-
55
- return $this->belongsToMany(User::class, 'favorite', 'micropost_id', 'user_id' )->withTimestamps();
594
+
56
-
57
- }
58
-
59
-
60
-
61
- public function favoriteIndex()
595
+ @section('content')
62
-
596
+
63
- {
597
+ <div class="row">
598
+
64
-
599
+ <aside class="col-sm-4">
600
+
65
- $data = [];
601
+ {{-- ユーザ情報 --}}
66
-
602
+
67
- if (\Auth::check()) { // 認証済みの場合
603
+ @include('users.card')
68
-
604
+
69
- // 認証済みユーザを取得
605
+ </aside>
70
-
71
- $user = \Auth::user();
606
+
72
-
73
- // お気に入り投稿の一覧を作成日時の降順で取得
74
-
75
- $favoritePosts = $user->feed_favoriteMicroposts()->orderBy('created_at', 'desc')->paginate(10);
76
-
77
-
78
-
79
- $data = [
80
-
81
- 'user' => $user,
82
-
83
- 'favoritePosts' => $favoritePosts,
607
+ <div class="col-sm-8">
84
-
85
- ];
608
+
86
-
87
- }
88
-
89
-
90
-
91
- // Welcomeビューでそれらを表示
609
+ {{-- タブ --}}
92
-
610
+
93
- return view('users.navtabs', $data);
611
+ @include('users.navtabs')
94
-
612
+
95
- }
613
+ {{-- お気に入り一覧 --}}
614
+
96
-
615
+ @include('users.favoriteUsers')
616
+
97
-
617
+ </div>
618
+
98
-
619
+ </div>
99
-
100
-
620
+
101
- }
621
+ @endsection
102
-
103
-
104
622
 
105
623
  ```
106
624
 
107
- ・User.php
625
+ favoriteUsers.blade
108
626
 
109
627
  ```Laravel
110
628
 
111
- <?php
112
-
113
-
114
-
115
- <?php
116
-
117
-
118
-
119
- namespace App;
120
-
121
-
122
-
123
- use Illuminate\Contracts\Auth\MustVerifyEmail;
124
-
125
- use Illuminate\Foundation\Auth\User as Authenticatable;
126
-
127
- use Illuminate\Notifications\Notifiable;
128
-
129
-
130
-
131
- class User extends Authenticatable
132
-
133
- {
134
-
135
- use Notifiable;
136
-
137
-
138
-
139
- /**
140
-
141
- * The attributes that are mass assignable.
142
-
143
- *
144
-
145
- * @var array
146
-
147
- */
148
-
149
- protected $fillable = [
150
-
151
- 'name', 'email', 'password',
152
-
153
- ];
154
-
155
-
156
-
157
- /**
158
-
159
- * The attributes that should be hidden for arrays.
160
-
161
- *
162
-
163
- * @var array
164
-
165
- */
166
-
167
- protected $hidden = [
168
-
169
- 'password', 'remember_token',
170
-
171
- ];
172
-
173
-
174
-
175
- /**
176
-
177
- * The attributes that should be cast to native types.
178
-
179
- *
180
-
181
- * @var array
182
-
183
- */
184
-
185
- protected $casts = [
186
-
187
- 'email_verified_at' => 'datetime',
188
-
189
- ];
190
-
191
-
192
-
193
- /**
194
-
195
- * このユーザが所有する投稿。( Micropostモデルとの関係を定義)
196
-
197
- */
198
-
199
- public function microposts()
200
-
201
- {
202
-
203
- return $this->hasMany(Micropost::class);
204
-
205
- }
206
-
207
-
208
-
209
- /**
210
-
211
- * このユーザに関係するモデルの件数をロードする。
212
-
213
- */
214
-
215
- public function loadRelationshipCounts()
216
-
217
- {
218
-
219
- $this->loadCount(['microposts', 'followings', 'followers','favorites']);
220
-
221
- }
222
-
223
-
224
-
225
-
226
-
227
- /**
228
-
229
- * このユーザがフォロー中のユーザ。( Userモデルとの関係を定義)
230
-
231
- */
232
-
233
- public function followings()
234
-
235
- {
236
-
237
- return $this->belongsToMany(User::class, 'user_follow', 'user_id', 'follow_id')->withTimestamps();
238
-
239
- }
240
-
241
-
242
-
243
- /**
244
-
245
- * このユーザをフォロー中のユーザ。( Userモデルとの関係を定義)
246
-
247
- */
248
-
249
- public function followers()
250
-
251
- {
252
-
253
- return $this->belongsToMany(User::class, 'user_follow', 'follow_id', 'user_id')->withTimestamps();
254
-
255
- }
256
-
257
-
258
-
259
- /**
260
-
261
- * $userIdで指定されたユーザをフォローする。
262
-
263
- *
264
-
265
- * @param int $userId
266
-
267
- * @return bool
268
-
269
- */
270
-
271
- public function follow($userId)
272
-
273
- {
274
-
275
- // すでにフォローしているかの確認
276
-
277
- $exist = $this->is_following($userId);
278
-
279
- // 相手が自分自身かどうかの確認
280
-
281
- $its_me = $this->id == $userId;
282
-
283
-
284
-
285
- if ($exist || $its_me) {
286
-
287
- // すでにフォローしていれば何もしない
288
-
289
- return false;
290
-
291
- } else {
292
-
293
- // 未フォローであればフォローする
294
-
295
- $this->followings()->attach($userId);
296
-
297
- return true;
298
-
299
- }
300
-
301
- }
302
-
303
-
304
-
305
- /**
306
-
307
- * $userIdで指定されたユーザをアンフォローする。
308
-
309
- *
310
-
311
- * @param int $userId
312
-
313
- * @return bool
314
-
315
- */
316
-
317
- public function unfollow($userId)
318
-
319
- {
320
-
321
- // すでにフォローしているかの確認
322
-
323
- $exist = $this->is_following($userId);
324
-
325
- // 相手が自分自身かどうかの確認
326
-
327
- $its_me = $this->id == $userId;
328
-
329
-
330
-
331
- if ($exist && !$its_me) {
332
-
333
- // すでにフォローしていればフォローを外す
334
-
335
- $this->followings()->detach($userId);
336
-
337
- return true;
338
-
339
- } else {
340
-
341
- // 未フォローであれば何もしない
342
-
343
- return false;
344
-
345
- }
346
-
347
- }
348
-
349
-
350
-
351
- /**
352
-
353
- * 指定された $userIdのユーザをこのユーザがフォロー中であるか調べる。フォロー中ならtrueを返す。
354
-
355
- *
356
-
357
- * @param int $userId
358
-
359
- * @return bool
360
-
361
- */
362
-
363
- public function is_following($userId)
364
-
365
- {
366
-
367
- // フォロー中ユーザの中に $userIdのものが存在するか
368
-
369
- return $this->followings()->where('follow_id', $userId)->exists();
370
-
371
- }
372
-
373
-
374
-
375
- public function feed_microposts()
376
-
377
- {
378
-
379
- // このユーザがフォロー中のユーザのidを取得して配列にする
380
-
381
- $userIds = $this->followings()->pluck('users.id')->toArray();
382
-
383
- // このユーザのidもその配列に追加
384
-
385
- $userIds[] = $this->id;
386
-
387
- // それらのユーザが所有する投稿に絞り込む
388
-
389
- return Micropost::whereIn('user_id', $userIds);
390
-
391
- }
392
-
393
-
394
-
395
- /**
396
-
397
- * このユーザがお気に入りの投稿。( Userモデルとの関係を定義)
398
-
399
- */
400
-
401
- public function favorites()
402
-
403
- {
404
-
405
- // 第一引数:得られるmodelクラス、第二引数:中間テーブル、第三引数:自分のidを示すカラム、第四引数:相手のidを示すカラム
406
-
407
- return $this->belongsToMany(Micropost::class, 'favorite', 'user_id', 'micropost_id')->withTimestamps();
408
-
409
- }
410
-
411
-
412
-
413
- public function favorite($userId)
414
-
415
- {
416
-
417
- // すでにフォローしているかの確認
418
-
419
- $exist = $this->is_favorite($userId);
420
-
421
- // 相手が自分自身かどうかの確認
422
-
423
- $its_me = $this->id == $userId;
424
-
425
-
426
-
427
- if ($exist || $its_me) {
428
-
429
- // すでにフォローしていれば何もしない
430
-
431
- return false;
432
-
433
- } else {
434
-
435
- // 未フォローであればフォローする
436
-
437
- $this->favorites()->attach($userId);
438
-
439
- return true;
440
-
441
- }
442
-
443
- }
444
-
445
-
446
-
447
- public function unfavorite($userId)
448
-
449
- {
450
-
451
- // すでにフォローしているかの確認
452
-
453
- $exist = $this->is_favorite($userId);
454
-
455
- // 相手が自分自身かどうかの確認
456
-
457
- $its_me = $this->id == $userId;
458
-
459
-
460
-
461
- if ($exist && !$its_me) {
462
-
463
- // すでにフォローしていればフォローを外す
464
-
465
- $this->favorites()->detach($userId);
466
-
467
- return true;
468
-
469
- } else {
470
-
471
- // 未フォローであれば何もしない
472
-
473
- return false;
474
-
475
- }
476
-
477
- }
478
-
479
-
480
-
481
- public function is_favorite($userId)
482
-
483
- {
484
-
485
- // フォロー中ユーザの中に $userIdのものが存在するか
486
-
487
- return $this->favorites()->where('micropost_id', $userId)->exists();
488
-
489
- }
490
-
491
-
492
-
493
- public function feed_favoriteMicroposts()
494
-
495
- {
496
-
497
- // favoriteテーブに記録されているuser_idを取得
498
-
499
- $userIds = $this->favorites()->pluck('favorite.user_id')->toArray();
500
-
501
- // Micropostテーブルのデータのうち、$userIDs配列のいずれかと合致するuser_idをもつものを返す。
502
-
503
- return Micropost::whereIn('user_id', $userIds);
504
-
505
- // favoriteテーブに記録されているmicropost_idを取得
506
-
507
- $postIds = $this->favorites()->pluck('favorite.micropost_id')->toArray();
508
-
509
- // Micropostテーブルのデータのうち、$postIds配列のいずれかと合致するidをもつものを返す。
510
-
511
- return Micropost::whereIn('id', $postIds);
512
-
513
- }
514
-
515
- }
516
-
517
-
629
+ @if (count($favoritePosts) > 0)
630
+
631
+ <ul class="list-unstyled">
632
+
633
+ @foreach ($favoritePosts as $favoritePost)
634
+
635
+ <li class="media">
636
+
637
+ <div class="media-body">
638
+
639
+ <div>
640
+
641
+ {{-- 投稿の所有者のユーザ詳細ページへのリンク --}}
642
+
643
+ {!! link_to_route('users.show', $favoritePost->user->name, ['user' => $favoritePosts->user->id]) !!}
644
+
645
+ <span class="text-muted">posted at {{ $favoritePosts->created_at }}</span>
646
+
647
+ </div>
648
+
649
+ <div>
650
+
651
+ {{-- ユーザ詳細ページへのリンク --}}
652
+
653
+ <p>{!! link_to_route('users.show', 'View profile', ['user' => $user->id]) !!}</p>
654
+
655
+ </div>
656
+
657
+ </div>
658
+
659
+ </li>
660
+
661
+ @endforeach
662
+
663
+ </ul>
664
+
665
+ {{-- ページネーションのリンク --}}
666
+
667
+ {{ $users->links() }}
668
+
669
+ @endif
518
670
 
519
671
  ```
520
-
521
- ・navtabs.blade
522
-
523
- ```Laravel
524
-
525
- <ul class="nav nav-tabs nav-justified mb-3">
526
-
527
- {{-- ユーザ詳細タブ --}}
528
-
529
- <li class="nav-item">
530
-
531
- <a href="{{ route('users.show', ['user' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.show') ? 'active' : '' }}">
532
-
533
- TimeLine
534
-
535
- <span class="badge badge-secondary">{{ $user->microposts_count }}</span>
536
-
537
- </a>
538
-
539
- </li>
540
-
541
- {{-- フォロー一覧タブ --}}
542
-
543
- <li class="nav-item">
544
-
545
- <a href="{{ route('users.followings', ['id' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.followings') ? 'active' : '' }}">
546
-
547
- Followings
548
-
549
- <span class="badge badge-secondary">{{ $user->followings_count }}</span>
550
-
551
- </a>
552
-
553
- </li>
554
-
555
- {{-- フォロワー一覧タブ --}}
556
-
557
- <li class="nav-item">
558
-
559
- <a href="{{ route('users.followers', ['id' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.followers') ? 'active' : '' }}">
560
-
561
- Followers
562
-
563
- <span class="badge badge-secondary">{{ $user->followers_count }}</span>
564
-
565
- </a>
566
-
567
- </li>
568
-
569
- {{-- お気に入り一覧タブ --}}
570
-
571
- <li class="nav-item">
572
-
573
- <a href="{{ route('users.favorites', ['id' => $user->id]) }}" class="nav-link {{ Request::routeIs('users.favorites') ? 'active' : '' }}">
574
-
575
- Favorite
576
-
577
- <span class="badge badge-secondary">{{ $user->favorites_count }}</span>
578
-
579
- </a>
580
-
581
- </li>
582
-
583
- </ul>
584
-
585
- ```
586
-
587
- ・favorites.blade
588
-
589
- ```Laravel
590
-
591
- @extends('layouts.app')
592
-
593
-
594
-
595
- @section('content')
596
-
597
- <div class="row">
598
-
599
- <aside class="col-sm-4">
600
-
601
- {{-- ユーザ情報 --}}
602
-
603
- @include('users.card')
604
-
605
- </aside>
606
-
607
- <div class="col-sm-8">
608
-
609
- {{-- タブ --}}
610
-
611
- @include('users.navtabs')
612
-
613
- {{-- お気に入り一覧 --}}
614
-
615
- @include('users.favoriteUsers')
616
-
617
- </div>
618
-
619
- </div>
620
-
621
- @endsection
622
-
623
- ```
624
-
625
- ・favoriteUsers.blade
626
-
627
- ```Laravel
628
-
629
- @if (count($favoritePosts) > 0)
630
-
631
- <ul class="list-unstyled">
632
-
633
- @foreach ($favoritePosts as $favoritePost)
634
-
635
- <li class="media">
636
-
637
- <div class="media-body">
638
-
639
- <div>
640
-
641
- {{-- 投稿の所有者のユーザ詳細ページへのリンク --}}
642
-
643
- {!! link_to_route('users.show', $favoritePost->user->name, ['user' => $favoritePosts->user->id]) !!}
644
-
645
- <span class="text-muted">posted at {{ $favoritePosts->created_at }}</span>
646
-
647
- </div>
648
-
649
- <div>
650
-
651
- {{-- ユーザ詳細ページへのリンク --}}
652
-
653
- <p>{!! link_to_route('users.show', 'View profile', ['user' => $user->id]) !!}</p>
654
-
655
- </div>
656
-
657
- </div>
658
-
659
- </li>
660
-
661
- @endforeach
662
-
663
- </ul>
664
-
665
- {{-- ページネーションのリンク --}}
666
-
667
- {{ $users->links() }}
668
-
669
- @endif
670
-
671
- ```