実現したいこと
投稿一覧画面で自分の投稿とフォローしたユーザーの投稿を表示させたい。
前提
PHP, Laravelでブログサイトを作っています。
フォロー機能を作成後、投稿一覧画面でフォローしたユーザーの投稿を表示させたいと思いコードを書いたのですが、フォローしていないユーザーの投稿が表示されてどこを間違えているのか分からないので教えていただけると幸いです。
該当のソースコード
index.blade.php
php
1@extends('layouts.logged_in')2 3@section('title', $title)4 5@section('content')6 <h2>おすすめユーザー</h2>7 <ul class="recommend_users">8 @forelse($recommend_users as $recommend_user)9 <li><a href="{{ route('users.show', $recommend_user) }}">{{ $recommend_user->name }}</a></li>10 @empty11 <li>他のユーザーが存在しません。</li>12 @endforelse 13 </ul>14 <h1>{{ $title }}</h1>15 <ul>16 @forelse($posts as $post)17 <li>18 {{ $post->user->name }}:19 {!! nl2br($post->comment) !!}<br>20 ({{ $post->created_at }})21 @if($user->isEditable($post))22 [<a href="{{ route('posts.edit', $post) }}">編集</a>]23 @endif24 <form action="{{ url('posts/'.$post->id) }}" method="post">25 @csrf 26 @method('delete')27 <button type="submit">削除</button>28 </form>29 </li>30 @empty31 <p>投稿がありません。</p>32 @endforelse 33 </ul>34@endsection
PostController.php
php
1<?php2 3namespace App\Http\Controllers;4 5use Illuminate\Http\Request;6use App\Post;7use App\Http\Requests\PostRequest;8use App\Http\Requests\PostImageRequest;9use App\User;10 11class PostController extends Controller12{13 // 投稿一覧14 public function index(){15 $user = \Auth::user();16 $posts = $user->posts()->latest()->get();17 $follow_user_ids = $user->follow_users->pluck('id');18 $user_posts = $user->posts()->orWhereIn('user_id', $follow_user_ids )->latest()->get();19 return view('posts.index', [20 'title' => '投稿一覧',21 'user' => $user,22 'posts' => $user_posts,23 'recommend_users' => User::recommend($user->id)->get()24 ]);25 }26 27 // 新規投稿フォーム28 public function create()29 {30 return view('posts.create', [31 'title' => '新規投稿',32 ]);33 }34 35 // 投稿追加処理36 public function store(PostRequest $request){37 Post::create([38 'user_id' => \Auth::user()->id,39 'comment' => $request->comment,40 ]);41 session()->flash('success', '投稿を追加しました');42 return redirect()->route('posts.index');43 }44 45 // 投稿詳細46 public function show($id)47 {48 return view('posts.show', [49 'title' => '投稿詳細',50 ]);51 }52 53 // 投稿編集フォーム54 public function edit($id)55 {56 // ルーティングパラメータで渡されたidを利用してインスタンスを取得57 $post = Post::find($id);58 return view('posts.edit', [59 'title' => '投稿編集',60 'post' => $post,61 ]);62 }63 64 // 投稿更新処理65 public function update($id, PostRequest $request)66 {67 $post = Post::find($id);68 $post->update($request->only(['comment']));69 session()->flash('success', '投稿を編集しました');70 return redirect()->route('posts.index');71 }72 73 // 投稿削除処理74 public function destroy($id)75 {76 $post = Post::find($id);77 78 $post->delete();79 session()->flash('success', '投稿を削除しました');80 return redirect()->route('posts.index');81 }82 83 public function __construct()84 {85 $this->middleware('auth');86 }87}
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
testuser1でログインし、testuser2をフォローしました。
投稿一覧にはtestuser1の投稿とtestuser3の投稿が表示されてしまいました。
testuser1とtestuser2の投稿を表示させたいです。
よろしくお願いいたします。

0 コメント