Laravel条件子句用于过滤值

I have a event table with status o or 1.

I have to filter the event with status 1,0 or ALL.

I tried with laravel when conditional clause,its not working with value zero,other conditionals are working.

$status    = Input::get('status');
$events    = DB::table('events')
          ->select('events.*')
          ->when($status, function ($query) use ($status) {
           return $query->where("events.status",$status);
           })
          ->get();

in_array function used in when method try this one

because 0(zero) means(false) by default understand so try to use inner function in when method

if didn't pass status then set default value as 2 or any number but not 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();

second way create a new function

   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();