Can u try something like this:
->when(isset($person), function ($query) use ($person) {
$query->where('users.person', 'LIKE', '%'.$person.'%');
}, function ($query) {
$query->whereNull('users.person');
});
If you do need to include the users with NULL value for the person column, even if the variable $person is not empty then:
->when(isset($person), function ($query) use ($person) {
$query->where(function ($query) use ($person) {
$query->where('users.person', 'LIKE', '%'.$person.'%')
->orWhereNull('users.person');
});
}, function ($query) {
$query->whereNull('users.person');
});