gpt4 book ai didi

php - Laravel firstOrNew 如何检查它是第一个还是新的?

转载 作者:IT王子 更新时间:2023-10-29 00:00:53 28 4
gpt4 key购买 nike

我正在使用 Laravel 的函数 firstOrNew() 来创建新用户或查找并更新现有用户。

创建对象后,如何知道它之前是否存在或是否是新对象?

思路是这样的:

$user = \App\User::firstOrNew([
'email' => $userData->getEmail(),
'name' => $userData->getName(),
]);

if ($user->new) { // some way to check
// user was created now
} else {
//user already existed
}

最佳答案

firstOrNew()

此函数将从数据库中返回第一条记录,或者实例化数据库中尚不存在的新模型实例。因此,如果您想检查该实例是从数据库中提取的还是新实例,您可以检查 exists property (不是函数)模型。

if ($user->exists) {
// user already exists and was pulled from database.
} else {
// user created from 'new'; does not exist in database.
}

最初的问题是关于 firstOrNew() 的,但是很多人似乎也是为了 firstOrCreate() 而来的。 firstOrCreate() 不同,需要不同的检查。

firstOrCreate()

此函数将从数据库中返回第一条记录,或者在数据库中创建一条新记录并返回该记录。由于新创建的记录将存在于数据库中,因此您无法检查 exists 属性,因为它在这两种情况下都为真。但是,您可以检查 wasRecentlyCreated 属性。如果当前模型实例刚刚在数据库中创建,则此属性将为 true,如果它已经在数据库中,则为 false。

if ($user->wasRecentlyCreated) {
// user just created in the database; it didn't exist before.
} else {
// user already existed and was pulled from database.
}

关于php - Laravel firstOrNew 如何检查它是第一个还是新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30686880/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com