gpt4 book ai didi

php - Laravel 的 Eloquent public static function "create"在 Model.php 中发生了什么?

转载 作者:行者123 更新时间:2023-12-03 23:14:30 25 4
gpt4 key购买 nike

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

例如:

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 中搜索不会给我这样的结果。请解释它是如何工作的,它在幕后调用了什么。

enter image description here

谢谢。

最佳答案

Eloquent 的 _call_callStatic 将调用转发给 Eloquent Builder 实例。 create 方法已从 Model 移出并移入 Builder。

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

关于php - Laravel 的 Eloquent public static function "create"在 Model.php 中发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47492543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com