public function store(Request $request) { $club = Club::where('name', $request->get('club_name'))->first(); if (empty($club)) { $club = Club::createNew($request->all()); } $team = $club->teams()->where('name', $request->get('team_name'))->first(); if (empty($team)) { $team = $club->createNewTeam($request->all()); } // team exists and has a user add pnding user and notify original creator that user wants access // else add user to team $user = User::where('_id', $request->get('user_id'))->first(); $role = new Role(); $role->club_id = $club->_id; $role->club_name = $club->name; $role->team_id = $team->_id; $role->team_name = $team->name; $role->role = 'coach'; $user->roles()->save($role); return response()->json($team, 200); }