如何检查记录是否已存在,然后更新或插入laravel?

时间:2017-09-16 05:41:27

标签: php mysql 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();


    }



 所以这是我尝试的方式,我检查messenger用户ID是否已经存在,如果messenger用户id已经存在我想更新现有行,否则我想插入一个新行。



    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 个答案:

答案 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);

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