Laravelで作成したフォロー機能でフォロー・フォロー解除ボタンを作っています。
そのボタンを条件分岐させフォローしてるユーザーはフォロー解除ボタン、フォローしてないユーザーはフォローするボタンにそれぞれ変えたいです。
現状フォロー状況にかかわらずフォローボタンが出てきています。
#####UserController
public function search(User $user) { $all_users = $user->getAllUsers(auth()->user()->id); return view('users.search', [ 'all_users' => $all_users ]); } public function follow(User $user) { $follower = auth()->user(); $is_following = $follower->isFollowing($user->id); if(!$is_following) { $follower->follow($user->id); return back(); } } // フォロー解除 public function unfollow(User $user) { $follower = auth()->user(); $is_following = $follower->isFollowing($user->id); if($is_following) { $follower->unfollow($user->id); return redirect(); } }
#####Useモデル
public function followings() { return $this->belongsToMany(User::class, 'follows', 'follower_id', 'follow_id'); } //このユーザーをフォローしてる人の取得 public function followers() { return $this->belongsToMany(User::class, 'follows', 'follow_id', 'follower_id'); } public function follow(Int $user_id) { return $this->followings()->attach($user_id); } // フォロー解除する public function unfollow(Int $user_id) { return $this->followings()->detach($user_id); } public function isFollowing($user_id) { return (boolean) $this->followings()->where('follower_id', $user_id)->exists(); } public function isFollowed($user_id) { return (boolean) $this->followers()->where('follow_id', $user_id)->exists(); }
######view.blade
@foreach ($all_users as $user) <div id="user_list"> <div> <img class="usericon" src="/storage/{{$user->images}}"> <p class="user-name">{{ $user->username }}</p> </div> <div> @if (Auth::id() !=$user->id) @if (auth()->user()->isFollowed($user->id)) <form action="{{ route('unfollow', ['id' => $user->id]) }}" method="POST"> {{ csrf_field() }} {{ method_field('DELETE') }} <button type="submit" class="btn btn-danger">フォロー解除</button> </form> @else <form action="{{ route('follow', ['id' => $user->id]) }}" method="POST"> {{ csrf_field() }} <button type="submit" class="btn btn-primary">フォローする</button> </form> @endif </div> @endif </div> @endforeach <div class="page"> {{ $all_users->links() }} </div
@if文の$userになにが入ってるか確認した際にひとりのユーザーの値しかはいってなかったのですがそれが原因でしょうか?
なにかアドバイスお願いいたします。
一気に質問を複数投稿している様ですが、まずは1つずつ解決してみてはいかがでしょう。
あなたの回答
tips
プレビュー