2017-09-16 118 views
0

我想先检查数据是否已经存在或没有,如果数据已经存在,则更新函数,否则插入一条新记录。 它插入新记录时的工作,但我不希望在未来的重复行,如何检查记录是否已经存在,然后更新或插入laravel?

public function store(Request $request) 
 
    { 
 
     $requestData = $request->all(); 
 
     
 
      $jobseeker = new Jobseeker(); 
 
      $jobseeker->fullname= $requestData['full name']; 
 
      $jobseeker->gender= $requestData['Gender']; 
 
      $jobseeker->messenger_user_id= $request->{'messenger user id'}; 
 
      $jobseeker->save(); 
 

 

 
    }
因此,这里是我怎样努力,我检查信使用户ID已经存在或不,如果messenger用户标识已经存在,我想更新现有的行,否则我想插入一个新的行。

public function store(Request $request,$messenger_user_id) 
 
    { 
 
     $requestData = $request->all(); 
 

 
     $my_msg_id = Jobseeker::where('messenger_user_id',$requestData['messenger user id'])->first(); 
 
     
 
     if (is_null($my_msg_id)) { 
 
      $jobseekers = Jobseeker::find($messenger_user_id); 
 
      $jobseeker->fullname= $requestData['full name']; 
 
      $jobseeker->gender= $requestData['Gender']; 
 
      $jobseeker->messenger_user_id= $request->{'messenger user id'}; 
 
     } 
 
     else{ 
 
      $jobseeker = new Jobseeker(); 
 
      $jobseeker->fullname= $requestData['full name']; 
 
      $jobseeker->gender= $requestData['Gender']; 
 
      $jobseeker->messenger_user_id= $request->{'messenger user id'}; 
 
      $jobseeker->save(); 
 
     } 
 

 
    }

有人能指导我,在先进的感谢。

+1

您是否听说过larvel的firstOrCreate/firstOrNew方法?在这里看到文档https://laravel.com/docs/5.5/eloquent#inserts –

+0

嗨,是啊,我听说过,为什么? –

+0

然后最好使用这些方法为你的问题 –

回答

3

你不需要在laravel中完成所有这些。使用方法firstOrCreate

$data_array = [ 
    'full_name' => $requestData['full name'], 
    'gender' => $requestData['Gender'], 
]; 

$jobseeker = App\Jobseeker::firstOrCreate(['messenger_user_id' => $messenger_user_id], $data_array); 

它需要一个数组作为第一个参数来查找模型和数组作为第二个参数来更新给定键值的记录数组中,或者它会创建一个新的纪录,给定的数据,然后返回模型对象。

+0

其工作对我来说,谢谢 –

相关问题