firstOrCreate方法会通过给定的 列 / 值 来匹配数据库中的数据。如果在数据库中找不到对应的模型, 则会从第一个参数的属性乃至第二个参数的属性中创建一条记录插入到数据库。

updateOrCreate 方法更新现有模型或在不存在的情况下则创建新的模型。跟 firstOrCreate 方法一样,updateOrCreate 匹配到对应模型,所以不需要调用 save() 方法:

我们可以通过 wasRecentlyCreated 属性来判断这两个方法执行的是查询/更新还是创建操作。

$user = User::firstOrCreate($userData);
if($user->wasRecentlyCreated){
  // 创建操作
}else{
  // 查询操作
}

$user = User::updateOrCreate($userData);
if($user->wasRecentlyCreated){
  // 创建操作
}else{
  // 更新操作
}