thinkphp框架中Model对象$origin对象的作用

2021-07-01 00:03

阅读:377

标签:个数   修改   方式   函数   mod   php框架   记录   bsp   数据   

在Model的构造函数中,$origin的初始化方式如下

if (is_object($data)) {
      $this->data = get_object_vars($data);
} else {
      $this->data = $data;
}
// 记录原始数据
$this->origin = $this->data;

$origin保存的是一个数组,因为如果保存的是对象的话,因为对象是引用,修改的时候会把$data和$origin同时修改了。

而我们需要的效果是$origin保存初始化时候的原始数据。

 

在thinkphp的save函数中,就可以对比$data和$origin找出修改了哪些字段,这样更新的时候就可以只更新修改过的字段

$data = array_udiff_assoc($this->data, $this->origin, function ($a, $b) {
       if ((empty($a) || empty($b)) && $a !== $b) {
              return 1;
       }
       return is_object($a) || $a != $b ? 1 : 0;
});

 

thinkphp框架中Model对象$origin对象的作用

标签:个数   修改   方式   函数   mod   php框架   记录   bsp   数据   

原文地址:http://www.cnblogs.com/eleven24/p/7135896.html


评论


亲,登录后才可以留言!