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


    在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;
    });
    
  • 相关阅读:
    javascript学习7
    javascript学习6
    javascript学习5
    javascript学习4
    javascript学习3
    javascript学习2
    兼容性
    工作中总结的经验之git篇
    git解决内容冲突
    Gulp压缩JavaScript代码
  • 原文地址:https://www.cnblogs.com/eleven24/p/7135896.html
Copyright © 2020-2023  润新知