thinkphp建立表字段映射后进行update 字段丢失

[重现步骤]
1.在MODEL定义字段映射

protected $_map = array(

        'id'=>'id',

        'pid'=>'parent_id',  //父ID

        'name'=>'cn_name', //显示名字

        'order'=>'one_name',//显示顺序

        'path'=>'path',//路径

    );

2.action进行update操作

$model  =   D('city');

        if(false === $vo = $model->create()) {

            $this->error($model->getError(),true);

        }

        $result =   $model->save();

3. 在运行时由于映射的id=>id,数据$data['id']丢失代码在model.class.php

// 检查字段映射

if(isset($this->_map)) {

    foreach ($this->_map as $key=>$val){



        if(isset($data[$key])) {

            $data[$val] =   $data[$key];

            unset($data[$key]);

        }

    }

}

[结果] id值丢失,修改时把所有的值都改掉了
[期望] 字段映射可以一致,有时很有用

[备注]解决方案

// 检查字段映射

if(isset($this->_map)) {

    foreach ($this->_map as $key=>$val){

        //bugs 映射名称相同时数据丢失 keminar 修改

        if(isset($data[$key]) && $key!=$val) {

            $data[$val] =   $data[$key];

            unset($data[$key]);

        }

    }

}   

上一篇: MYSQL时间存啥类型好   下一篇: jquery表单验证ajax提交插件 jquery.form.js

提交疑问

请先登录 QQ微博登录

回顶部