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也是预编译绑定变量的方式。

 

       

  


猜你喜欢

转载自blog.csdn.net/weixin_42227665/article/details/80777877