3 回答

TA貢獻1779條經驗 獲得超6個贊
Eloquent 模型使用魔術方法(__call、__callStatic)將調用傳遞給 Eloquent Builder 類。因此,Model::create() 實際上是將調用傳遞給 Builder::create() 方法。
但是,如果您調查該方法,它與調用基本相同:
$model = new Model($attributes); $model->save();
通過直通的(查詢)構建器的這種混合允許您使用查詢方法,例如 Model::where()

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);
});
}

TA貢獻1825條經驗 獲得超6個贊
檢查以下文件
PATH_TO_PROJECT/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php
- 3 回答
- 0 關注
- 168 瀏覽
添加回答
舉報