zoukankan      html  css  js  c++  java
  • thinkphp 3.2 updateFields 设置之后保存失败

            // 检测提交字段的合法性
            if(isset($this->options['field'])) { // $this->field('field1,field2...')->create()
                $fields =   $this->options['field'];
                unset($this->options['field']);
            }elseif($type == self::MODEL_INSERT && isset($this->insertFields)) {
                $fields =   $this->insertFields;
            }elseif($type == self::MODEL_UPDATE && isset($this->updateFields)) {
                $fields =   $this->updateFields;
                //zll
                if (is_string($fields)) {
                    $fields = explode(',', $fields);
                }
                $pk     = $this->getPk();
                if (is_string($pk)) {
                    array_push($fields, $pk);
                }
                if (is_array($pk)) {
                    foreach ($pk as $pkTemp) {
                        array_push($fields, $pkTemp);
                    }
                }
                //zll
            }

    Model的create方法中检测提交字段的合法性,如果表单数据中有主键或者指定type=2,会判定为更新操作,从而执行一下代码:

    elseif($type == self::MODEL_UPDATE && isset($this->updateFields)) {
                $fields =   $this->updateFields;

    然后$fields中会不包含主键或者复合主键属性。从而导致save方法调用时的$data中不包含主键或者复合主键属性,保存失败。
    虽然可以在Model的$updateFields中加入主键或者复合主键,但是这明显是和$updateFields的含义相违背的。


    原文链接http://www.thinkphp.cn/bug/3707.html

  • 相关阅读:
    HDU 1856 More is better
    并查集模板
    HDU 1325 Is It A Tree?
    HDU 1272 小希的迷宫
    CodeVS 2639 约会计划
    POJ 1163 数字三角形
    HDU 1232 畅通工程
    HDU 1213 How Many Tables
    树形结构打印二叉树
    网址收藏
  • 原文地址:https://www.cnblogs.com/zonglonglong/p/7007746.html
Copyright © 2011-2022 走看看