in_array
функция, используемая в методе when
, попробуйте этот
, потому что 0 (ноль) означает (ложь), по умолчанию понимают, поэтому попробуйте использовать внутреннюю функцию, когда метод
если не прошел статус, то установить значение по умолчанию как 2
или любое число, но не 0,1 and null
$status = Input::has('status') ? Input::get('status') : 2;
$events = DB::table('events')->select('events.*')
->when(in_array($status,[0,1]), function ($query) use ($status) {
return $query->where("events.status",$status);
})->get();
второй способ создать новую функцию
function checkStatus($status,$array) {
if(isset($status)) {
return in_array($status,$array);
}
return false;
}
$events = DB::table('events')->select('events.*')
->when(checkStatus($status,[0,1]), function ($query) use ($status) {
return $query->where("events.status",$status);
})->get();