Laravel中Model:create() 和 Model:save() 的区别

39 阅读1分钟

先说结论:save()是保存单条数据并返回布尔值,create()是批量保存并返回一个集合或model

// 这里是伪代码
function create(Collection $modelCollection){
	.
  .
  .
    foreach($modelCollection as $model){
      ...
      $model->save();
      ..
    }
  .
  .
  .
  .
}
  1. Laravel会默认有Models/User.php文件,根据文件中use Illuminate\Foundation\Auth\User as Authenticatable;可以知道 User是继承自Illuminate\Foundation\Auth\User
  2. Illuminate\Foundation\Auth\User类继承了Illuminate\Database\Eloquent\Model类,此类中包含save()方法,作用就是将模型保存到数据库,并返回一个布尔值

  1. 再来看看 create()方法
  2. Models/User.php文件中引入了一个HasFactory类,他是一个 Trait 类,其中的factory方法会返回一个\Illuminate\Database\Eloquent\Factories\Factory

  1. \Illuminate\Database\Eloquent\Factories\Factory类中有个create()方法,他的作用是创建一个model类型的集合,并保存到数据库中

  1. create()方法通过store()方法批量调用Model::save()方法