Eloquent Model 的 create 方法在哪里?

每个模型都可以通过质量分配在 Laravel 中创建:

$flight = App\Flight::create(['name' => 'Flight 10']);

在 Laravel 5.6 中哪里可以找到这个方法的代码?

我查看了课程,Illuminate\Database\Eloquent\Model但找不到create方法。

我还检查了所有特征(从HasAttributesGuardsAttributes),但我也没有在create那里找到方法。

http://img1.mukewang.com/60c596040001a89407570159.jpg

由于该类model不扩展任何其他类,因此我对create隐藏该方法的位置感到有些困惑。


Helenr
浏览 139回答 3
3回答

哆啦的时光机

Eloquent 模型使用魔术方法(__call、__callStatic)将调用传递给 Eloquent Builder 类。因此,Model::create() 实际上是将调用传递给 Builder::create() 方法。但是,如果您调查该方法,它与调用基本相同:$model = new Model($attributes); $model->save();通过直通的(查询)构建器的这种混合允许您使用查询方法,例如 Model::where()

慕娘9325324

你可以在这里在 github 中找到它public function create(array $attributes = []){    return tap($this->newModelInstance($attributes), function ($instance) {        $instance->save();    });}/** * Save a new model and return the instance. Allow mass-assignment. * * @param  array  $attributes * @return \Illuminate\Database\Eloquent\Model|$this */public function forceCreate(array $attributes){    return $this->model->unguarded(function () use ($attributes) {        return $this->newModelInstance()->create($attributes);    });}

胡子哥哥

检查以下文件PATH_TO_PROJECT/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php
打开App,查看更多内容
随时随地看视频慕课网APP