首页 > 解决方案 > Eloquent Model 的 create 方法在哪里?

问题描述

每个模型都可以在 Laravel 中通过mass assignment创建:

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

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

我在课堂上看了看,Illuminate\Database\Eloquent\Model但找不到create方法。

我还检查了所有特征(从HasAttributesto GuardsAttributes),但我也没有找到create方法。

在此处输入图像描述

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

标签: phplaravellaravel-5

解决方案


Eloquent 模型使用魔术方法(__call、__callStatic)将调用传递给 Eloquent Builder 类。因此, Model::create() 实际上是将调用传递给 Builder::create() 方法。

但是,如果您调查该方法,则它与调用基本相同:

$model = new Model($attributes);
$model->save();

(Query) Builder via passthrough 的这种混合允许您使用查询方法,例如Model::where()


推荐阅读