DB::table("users")->select('*')->whereNotIn('user_name',function($query) {
$query->select('user_name')->from('buy_courses');
})->get();
po prostu dołącz właściwie jest to sprzężenie wewnętrzne w Laravelu, więc może i Ty możesz spróbować:
DB::table('users')
->join('buy_courses', 'users.user_name', '=', 'buy_courses.user_name')
->get();