Reputation: 6099
I want to be able to insert a new record into the database if it doesn't already exist. If it does exist I want to update the existing record with the new info.
Basically, the field that I want to check to see if it exists is called 'token'.
So, I have tried something like this:
$this->timesheet->firstOrNew(['token' => '12345'])->save();
This successfully creates the new row.
How do I pass in the other fields that I want to insert/update? For example first_name
, last_name
?
Can I do something like:
$this->timesheet->firstOrNew(['token' => '12345'])->update(['first_name' => 'Bob', 'last_name' => 'Smith'])->save();
Upvotes: 0
Views: 456
Reputation: 221
Before saving the object. Fill it with the other information that you want to save.
$timesheet = $this->timesheet->firstOrNew(['token' => '12345']);
$timesheet->fill(['first_name' => 'Bob', 'last_name' => 'Smith']);
$timesheet->save();
Upvotes: 1
Reputation: 220136
Use firstOrNew
, then follow it up with a call to fill
and save
:
$this->timesheet->firstOrNew(['token' => '12345'])
->fill(['first_name' => 'Bob', 'last_name' => 'Smith'])
->save();
Upvotes: 2