In Laravel, is there a way to differentiate between firstOrCreate
creating the row and if finding out the row exists from before?
Or will I have to manually do a get()
first, and then create the row?
In Laravel, is there a way to differentiate between firstOrCreate
creating the row and if finding out the row exists from before?
Or will I have to manually do a get()
first, and then create the row?
If you created the model in the current lifecycle, then the model's wasRecentlyCreated
attribute will be set to true
. Otherwise, that attribute will be set to false
.
In other words, lets say you have a user with the email, bob@example
.
$user = User::firstOrCreate(['email' => 'bob@example.com']);
// the below will dump out false because this entry already existed
var_dump($user->wasRecentlyCreated);
Now, lets say new@example.com
doesn't exist.
$user2 = User::firstOrCreate(['email' => 'new@example.com']);
// the below will dump out true because this user was created
// in the current request lifecycle
var_dump($user2->wasRecentlyCreated);