/** * Follow / Unfollow a user * * @param App\Http\Requests\FollowRequest $request * * @return response */ public function follow(FollowRequest $request) { $followed = User::find($request->followed_id); $row = DB::table('follows')->where([['followed_user_id', $followed->id], ['follower_user_id', $request->user()->id]]); if (count($row->get())) { $row->delete(); // Ensure this never drops into the negative if ($followed->followers_count > 0) { $followed->followers_count -= 1; } } else { DB::table('follows')->insert(['followed_user_id' => $followed->id, 'follower_user_id' => $request->user()->id]); $followed->followers_count += 1; } $followed->save(); return response()->json(['success' => true]); }