Check if request input is not null before set the value

19,720

Solution 1

This answer to this question taken from here :

if($request->filled('user_id'))

Solution 2

do this

$userInformation = new UserInformation;

if(request->has('firstname')){
   $userInformation->firstname = $request->firstname;
}
if(request->has('lastnme')){
   $userInformation->lastname = $request->lastname;
}

 // do it for all

 $User->information()->save($userInformation);

Edit: Or use Form requests, it's a better approach

Share:
19,720

Related videos on Youtube

dios231
Author by

dios231

Updated on June 04, 2022

Comments

  • dios231
    dios231 almost 2 years

    I have an API that set user settings. Because neither of inputs are mandatory I want to check first if the value exists and then set it to the model attributes in order to avoid null values.

    $this->InputValidator->validate($request, [
                    'firsname' => 'string',
                    'lastname' => 'string',
                    'email' => 'email',
                    'mobile_phone' => 'string',
                    'address' => 'string',
                    'language' => 'string',
                    'timezone' => 'string',
                    'nationality' => 'string',
                    'profile_photo' => 'url'
                ]);
    
                $userInformation = new UserInformation([
                    'firstname' => $request->input('firstname'),
                    'lastname' => $request->input('lastname'),
                    'email' => $request->input('email'),
                    'mobile_phone' => $request->input('mobile_phone'),
                    'address' => $request->input('address'),
                    'profile_photo' => $request->input('profile_photo')
                ]);
                $User->information()->save($userInformation);
    

    Specificaly when one of inputs is not existin I dont want to pass it to the model. Also I dont want to make inputs required

  • Achraf Khouadja
    Achraf Khouadja about 7 years
    better use $request->has('input') , it works on empty strings and null values (in laravel 5.4 empty strings are converted to null in request so this won't work)
  • Dmitry Malys
    Dmitry Malys almost 5 years
    I have just tested and request->has('firstname') will return true even if firstname is null. Maybe it is laravel version thing, im using 5.8
  • Achraf Khouadja
    Achraf Khouadja almost 5 years
    i'm not sure too but you can create a middleware that unsets null values in requests or you can just add request->get('firstname') != null , whatever suits you