[重现步骤]
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]);
}
}
}