request()->has()
возвращает логическое значение, указывающее, присутствует поле или нет. Это не то, что вы хотите, так как ваше поле будет всегда присутствовать (даже если значение равно 0)
Что вам нужно, это request()->get()
:
public function save($id = 0){
$data = \request()->only('name_surname','email');
$data['is_it_admin'] = \request()->get('is_it_admin');
if ($id>0){
$entry = User::where('id',$id)->firstOrFail();
$entry->update($data);
}
else{
$entry = User::create($data);
}
return redirect()
->route('admin.users.edit',$entry->id);
}
Хотя вам не нужно сделать это вы можете просто:
public function save($id = 0){
$data = \request()->only('name_surname','email', 'is_it_admin');
if ($id > 0){
$entry = User::where('id',$id)->firstOrFail();
$entry->update($data);
}
else {
$entry = User::create($data);
}
return redirect()
->route('admin.users.edit',$entry->id);
}