问题
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?
回答1:
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);
来源:https://stackoverflow.com/questions/36543477/in-laravel-is-there-a-way-to-find-out-whether-firstorcreate-created-or-if-it