Laravel 的 Eloquent public 静态函数 "create" 在 Model.php 中发生了什么?

What happened to Laravel's Eloquent public static function "create" in Model.php?

在 Laravel 5.x 的早期版本中(我不确定它何时更改)我能够在任何 Eloquent 模型上调用静态方法 create class 将记录插入数据库。

例如:

EloquentUser::create([
    'name' => self::ADMIN_NAME,
    'email' => self::ADMIN_EMAIL,
    'password' => bcrypt(self::ADMIN_PASSWORD),
]);

那是在 Model.php 中调用 public static function create (vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php)。

public static function create(array $attributes = [])
{
    $model = new static($attributes);

    $model->save();

    return $model;
}

在 Laravel 5.5 中我仍然可以调用 create 但是 Model.php 完全重新排列并且不包含此方法。更重要的是,在整个供应商/Illuminate 中搜索不会给我这样的结果。请解释,它仍然如何工作,它在幕后调用什么。

谢谢。

Eloquent 的 _call_callStatic 正在将调用转发到 Eloquent Builder 实例。 create 方法已从模型中移出并移入生成器中。

Illuminate\Database\Eloquent\Model::__callStatic -> __call -> newQuery -> Illuminate\Database\Eloquent\Builder@create

Model uses QueryBuilder which uses EloquentBuilder where method's code is. Best way for finding particular properties or methods is to use framework api docs.