V4n1ll4
V4n1ll4

Reputation: 6099

Laravel 5.1 firstOrNew

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

Answers (2)

codenut
codenut

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

Joseph Silber
Joseph Silber

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

Related Questions