前提・実現したいこと
ログインユーザーつぶやき及びフォローしているユーザーのつぶやきを表示したい。
発生している問題・エラーメッセージ
該当のソースコード
routes/web.php
php
1Route::resource('top', 'PostsController', ['only' => ['index', 'create', 'store', 'show', 'edit', 'update', 'destroy']]);
app/Models/Post.php
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Post extends Model 8{ 9 // 4.1 ログインユーザーのつぶやきを登録 10 public function postStore(Int $user_id, array $data) 11 { 12 $this->user_id = $user_id; 13 $this->posts = $data['posts']; 14 $this->save(); 15 16 return; 17 } 18 19 // 4.2.1 ログインユーザーのフォローのつぶやき表示を表示 20 public function getTimeLines(Int $user_id, array $follow_ids) 21 { 22 $follow_ids[] = $user_id; 23 return $this->whereIn('user_id', $follow_ids)->orderBy('created_at', 'DESC')->paginate(50); 24 } 25}
app/Models/Follow.php
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Follow extends Model 8{ 9 // 3.3 サイドバー/フォロー,フォロワー数の表示 10 public function getFollowCount($user_id) 11 { 12 return $this->where('follow', $user_id)->count(); 13 } 14 15 public function getFollowerCount($user_id) 16 { 17 return $this->where('follower', $user_id)->count(); 18 } 19 20 // 4.2.1 ログインユーザーのフォローのつぶやき表示を表示 21 public function followingIds(Int $user_id) 22 { 23 return $this->where('follow', $user_id)->get('follow'); 24 } 25}
app/Http/Controllers/PostsController.php
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Illuminate\Support\Facades\Validator; 7use App\User; 8use App\Post; 9use App\Follow; 10 11class PostsController extends Controller 12{ 13 // 3.3 サイドバー/フォロー,フォロワー数の表示 14 // 4.2.1 ログインユーザーのフォローのつぶやき表示を表示 15 public function index(User $user, Post $Post, Follow $follow) 16 { 17 $user = auth()->user(); 18 $follow_ids = $follow->followingIds($user->id); 19 $following_ids = $follow_ids->pluck('follower')->toArray(); 20 21 $timelines = $post > getTimelines($user->id, $following_ids); 22 23 $follow_count = $follow->getFollowCount($user->id); 24 $follower_count = $follow->getFollowerCount($user->id); 25 26 return view('posts.index', [ 27 'user' => $user, 28 'timelines' => $timelines, 29 'follow_count' => $follow_count, 30 'follower_count' => $follower_count, 31 ]); 32 } 33 34 // 4.1 ログインユーザーのつぶやきを登録 35 public function store(Request $request, Post $post) 36 { 37 $user = auth()->user(); 38 $data = $request->all(); 39 $validator = Validator::make($data, [ 40 'posts' => ['required', 'string', 'max:150'] 41 ]); 42 43 $validator->validate(); 44 $post->postStore($user->id, $data); 45 46 return redirect('top'); 47 } 48}
補足情報
・環境はLaravel Framework 5.5.48となります。
・「4.2.1 ログインユーザーのフォローのつぶやき表示を表示」の箇所が主に追加・修正した箇所になります。
・参考にしたサイトはこちらです。
以上となります。
初心者ですが、どうぞよろしくお願いします。