middleware('auth'); } public function store(Request $request) { $this->validate($request, [ 'item' => 'required|integer', ]); $item = $request->input('item'); $this->handleFollowRequest($item); return redirect()->back(); } protected function handleFollowRequest($item) { $user = Auth::user()->profile; $target = Profile::where('id', '!=', $user->id)->findOrFail($item); $private = (bool) $target->is_private; $isFollowing = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->count(); if($private == true && $isFollowing == 0) { $follow = FollowRequest::firstOrCreate([ 'follower_id' => $user->id, 'following_id' => $target->id ]); } elseif ($isFollowing == 0) { $follower = new Follower(); $follower->profile_id = $user->id; $follower->following_id = $target->id; $follower->save(); FollowPipeline::dispatch($follower); } else { $follower = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->firstOrFail(); $follower->delete(); } } }