Laravel $model->save()的相关底层实现逻辑代码

    相信很多人就对这个问题很疑惑:

   $model = new Model(); $mdoel->user_name = $userName;$mdoel->save();

       其中的user_name是怎么给赋值上的呢?我以前也比较困惑,后来看看底层的相关代码,才拨开云雾。
        打印过对象大家其实都知道里面有这个受保护的属性

    [attributes:protected] => Array()

在实例化对象的时候,被继承的model类的构造函数会执行syncOriginal()方法,这个方法的作用其实就是初始化属性attributes到属性$original中。

当我们在对对象关联的表的字段赋值的时候,会采用$newModel->param=$paramValue;这个时候,其实调用的是Model里面的魔术方法__set();

给字段和字段值设置到attributes对象属性数组中。

然后在save的时候,会调用Illuminate\Database\Query\Builder->insert($value)方法,$value就是对应的$attributes.当然这个save也是预编译绑定变量的方式。

 

       

  


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值