为了账号安全,请及时绑定邮箱和手机立即绑定

Eloquent Model 的 create 方法在哪里?

Eloquent Model 的 create 方法在哪里?

PHP
Helenr 2021-06-11 18:10:21
每个模型都可以通过质量分配在 Laravel 中创建:$flight = App\Flight::create(['name' => 'Flight 10']);在 Laravel 5.6 中哪里可以找到这个方法的代码?我查看了课程,Illuminate\Database\Eloquent\Model但找不到create方法。我还检查了所有特征(从HasAttributes到GuardsAttributes),但我也没有在create那里找到方法。由于该类model不扩展任何其他类,因此我对create隐藏该方法的位置感到有些困惑。
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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

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

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

通过直通的(查询)构建器的这种混合允许您使用查询方法,例如 Model::where()


查看完整回答
反对 回复 2021-06-13
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

你可以在这里在 github 中找到它


public function create(array $attributes = [])

{

    return tap($this->newModelInstance($attributes), function ($instance) {

        $instance->save();

    });

}

/**

 * Save a new model and return the instance. Allow mass-assignment.

 *

 * @param  array  $attributes

 * @return \Illuminate\Database\Eloquent\Model|$this

 */

public function forceCreate(array $attributes)

{

    return $this->model->unguarded(function () use ($attributes) {

        return $this->newModelInstance()->create($attributes);

    });

}


查看完整回答
反对 回复 2021-06-13
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

检查以下文件

PATH_TO_PROJECT/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php


查看完整回答
反对 回复 2021-06-13
  • 3 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信