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.
}