2017-02-12 17 views
3

У меня есть API, который устанавливает пользовательские настройки. Поскольку ни один из входов не является обязательным, я хочу сначала проверить, существует ли это значение, а затем установить его в атрибуты модели, чтобы избежать нулевых значений.Проверьте, не требуется ли вводить запрос до значения

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

Специально, если один из входов не существует, я не хочу передавать его модели. Кроме того, я не хочу, чтобы сделать входы требуется

ответ

1

сделать этот

$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); 
0

Проверьте каждое значение и нажмите на него первым в массив. Затем назначьте массив.

<?php 
$userArray=array(); 
if($request->input('firstname') != "") $userArray['firstname']=$request->input('firstname'); 

if($request->input('lastname') != "") $userArray['lastname']=$request->input('lastname'); 
if($request->input('email') != "") $userArray['email']=$request->input('email'); 
if($request->input('mobile_phone') != "") $userArray['mobile_phone']=$request->input('mobile_phone'); 
if($request->input('address') != "") $userArray['address']=$request->input('address'); 
if($request->input('profile_photo') != "") $userArray['profile_photo']=$request->input('profile_photo'); 

$userInformation = new UserInformation($userArray); 
?> 
+0

лучше использовать $ request-> имеет ('input'), он работает на пустых строках и нулевых значениях (в laravel 5.4 пустые строки преобразуются в нуль в запросе, так что это не сработает) –