php - Eloquent Model 的 create 方法在哪里?
问题描述
每个模型都可以在 Laravel 中通过mass assignment创建:
$flight = App\Flight::create(['name' => 'Flight 10']);
在 Laravel 5.6 中哪里可以找到这种方法的代码?
我在课堂上看了看,Illuminate\Database\Eloquent\Model
但找不到create
方法。
我还检查了所有特征(从HasAttributes
to GuardsAttributes
),但我也没有找到create
方法。
由于该类model
没有扩展任何其他类,因此我对create
隐藏该方法的位置感到有些困惑。
解决方案
Eloquent 模型使用魔术方法(__call、__callStatic)将调用传递给 Eloquent Builder 类。因此, Model::create() 实际上是将调用传递给 Builder::create() 方法。
但是,如果您调查该方法,则它与调用基本相同:
$model = new Model($attributes);
$model->save();
(Query) Builder via passthrough 的这种混合允许您使用查询方法,例如Model::where()
推荐阅读
- c# - 您将与派生类完全相关的事件方法放在哪里,但哪些调用方法与派生类不完全相关?
- python - 时间复杂度 - Python eval 的 BigO 表示法
- html - html 顶部的白条(已经没有边距)
- angular - ViewChild 返回“未定义”-Angular2
- javascript - keycloak 版本和带有 JS 前端的 Spring Boot App 的自动令牌更新问题
- javascript - 检查名称列上的哪个单元格等于某些文本
- c++ - 为什么这个随机数生成器不是线程安全的?
- javascript - 如何获取数组中子项的长度
- mysql - mysql - 使用 sum 和 rollup 获取列的百分比
- c# - 避免在 Entity Framework Core 的 DbContext 中使用“使用块”是否安全?