在Model.class.php中,_before_update方法里面改
// 更新数据前的回调方法
protected function _before_update(&$data, $options)
{
//检查数据有没有变化,如果没变化就不用更新数据库
$data_changed = false;
foreach ($data as $key => $val) {
if ($this->data[$key] != $val) {
$data_changed = true;
break;
}
}
return $data_changed;
}
注意这里判断数据是否改变的语句: if ($this->data[$key] != $val)
不能用 !==, 因为,如果某个字段在数据库里是整数,而从前端来的数据可能是字符串,虽然看起来它们的值是一样的,但是类型是不一样的。
在 约534行左右:
if (is_array($options['where']) && isset($options['where'][$pk])) {
$pkValue = $options['where'][$pk];
}
if (false === $this->_before_update($data, $options)) {
return false;
}
$result = $this->db->update($data, $options);