Использовать DB :: raw ()
$users = DB::select(DB::raw("YOUR QUERY AS IT IS"));
С помощью Query Builder - вы можете попробовать что-то вроде этого ..
DB::query()->fromSub(function($main_query){
$main_query->from('users')
->select(
DB::raw('distinct s.id as state_id, s.name as state_name, u.id as user_id,
case when uga.id is null then 1 else 0 end as inactifs,
case when uga.id is null then 0 else 1 end as actifs
')
)
->join('states as s', 'u.state_id', '=', 's.id')
->leftJoin('user_group_affiliations as uga', 'uga.user_id', '=', 'u.id')
->where('uga.active', 1)
->where(function($query){
return $query->whereNull('uga.start_date')
->orWhere('uga.start_date' '<=' date_create())
})
->where(function($query){
return $query->whereNull('uga.end_date')
->orWhere('uga.end_date' '>=' date_create())
})->groupBy('u.state_id') }, "quer")->get();
Дайте мне знать, если это поможет ..