Saturday, February 26, 2022

[FIXED] How to check if record is already exists and then update or insert in laravel?

Issue

I am trying to check first if data already exists or not. If data already exists, then update function otherwise insert a new record. It's working when inserting a new record, but I don't want to be duplicate rows in future.

    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();
    }

Here is how I tried, I check if the messenger user id already exists or not, if messenger user id already exists I want to update the existing row, otherwise I want to insert a new row.

    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();
        }

    }


Solution

You don't need to do all of this yourself in laravel. Use the method firstOrCreate.

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

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

It takes an array as first parameter to find a model and array as a second parameter to update the record with given key-values in that array or it'll create a new record with given data, then returns the model object.



Answered By - Deepansh Sachdeva

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.