码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-07-08 11:15:22      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:个数   修改   方式   函数   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!