You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6中Eloquent Model的create方法代码位置咨询

Laravel 5.6中create()方法的位置解析

哈哈,这个问题我当初第一次找的时候也懵过!其实create()方法并不在Model类或者那些关联的trait里,它藏在查询构建器的实现中,具体流程是这样的:

  • 首先,当你调用静态方法App\Flight::create(...)时,实际上触发的是Illuminate\Database\Eloquent\Model类中的__callStatic魔术方法。这个方法的作用是把静态调用转发给模型的查询构建器实例。
  • 然后,查询构建器实例是由Model的newQuery()方法创建的,它返回的是Illuminate\Database\Eloquent\Builder类的对象。
  • 真正的create()方法就定义在Illuminate\Database\Eloquent\Builder类里!这个方法会先通过fill()处理批量赋值的属性(这一步会用到GuardsAttributes trait里的守卫逻辑),然后调用save()完成模型的创建和保存。

简单说,create()是查询构建器提供的快捷方法,模型通过魔术方法把调用转发给了它,所以你直接在Model类里找不到它的定义~

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:18:01