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.
在 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.