对于unique不能验证UPDATE操作问题的解决方案(只是针对本问题作出的修改,具体对框架的架构有没有其他影响还没进行验证,如有问题请多指正。)
1.控制器:create方法增加第三个参数(参数为数组),作为查询对应数据的索引。$model->create(I('post.'),2,array('admin_id'=>$admin_id))
2.Think\Model.class.php修改
LINE 993:create方法增加第三参数$index(参数为数组)。 public function create($data='',$type='',$index=array())
LINE 1042:增加第三参数$index。if(!$this->autoValidation($data,$type,$index)) return false;
LINE 1179:autoValidation方法增加第三参数$index(参数为数组)。protected function autoValidation($data,$type,$index=array()) {
LINE 1204:增加第三参数$index。if(false === $this->_validationField($data,$val,$index))
LINE 1209:增加第三参数$index。if(false === $this->_validationField($data,$val,$index))
LINE 1214:增加第三参数$index。if(false === $this->_validationField($data,$val,$index))
LINE 1233:_validationField方法增加第三参数$index(参数为数组)。protected function _validationField($data,$val,$index=array()) {
LINE 1236:增加第三参数$index。if(false === $this->_validationFieldItem($data,$val,$index)){
LINE 1254:_validationFieldItem方法增加第三参数$index(参数为数组)。protected function _validationFieldItem($data,$val,$index=array()) {
LINE 1291:将本行的代码if($this->where($map)->find()) return false;
修改为:
if(($val[5] == 2 || $val[5] == 3) && !empty($index)){
$count = $this->where(array(key($index)=>array('NEQ', $index[key($index)])))->where($map)->count();
if($count) return false;
}else{
if($this->where($map)->find()) return false;
}
最佳答案