i havent dig deep enough, but this part is not correct AND iasp.user_id = 2,
shouldnt it be like this?:
$sports = Sport::query()
->join('in_active_sports as iasp', 'sports.id', '=', 'iasp.sport_id', 'left outer')
->select('sports.*','iasp.is_active as is_active')
->get();
or with the user_id condition:
$sports = Sport::query()
->join('in_active_sports as iasp', 'sports.id', '=', 'iasp.sport_id', 'left outer')
->where('iasp.user_id', 2)
->select('sports.*','iasp.is_active as is_active')
->get();
oh, and you probably dont need to specify the left outer option if you use lefJoin() instead of join()
$sports = Sport::query()
->leftJoin('in_active_sports as iasp', 'sports.id', '=', 'iasp.sport_id')
->select('sports.*','iasp.is_active as is_active')
->get();