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
Related videos on Youtube
Author by
dios231
Updated on June 04, 2022Comments
-
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 about 7 yearsbetter 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 almost 5 yearsI have just tested and
request->has('firstname')
will return true even iffirstname
is null. Maybe it is laravel version thing, im using 5.8 -
Achraf Khouadja almost 5 yearsi'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