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
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.