一、thinkphp2.0的方法setInc、setDec(路径:thinkphp/lib/Think/Core/Model.class)时是这样写的:
public function setInc($field,$condition='',$step=1) {
return $this->setField($field,array('exp',$field.'+'.$step),$condition);
// return $this->setField($field,array('exp',''.$field.''.'+'.$step),$condition);
}
public function setDec($field,$condition='',$step=1) {
return $this->setField($field,array('exp',$field.'-'.$step),$condition);
}
对于统计字段(通常指的是数字类型)的更新,setInc 和 setDec 方法使用方法如下:
$User = M( "User" ); // 实例化 User 对象
$User->setInc( 'score','id=5',3 ); // 用户的积分加 3
$User->setInc( 'score','id=5' ); // 用户的积分加 1
$User->setDec( 'score','id=5',5 ); // 用户的积分减 5
$User->setDec( 'score','id=5' ); // 用户的积分减 1
前一段时间我用上面的方法怎么用都不能实现自增和自减,后来不断调试总算找到解决方法,首先要将统计型字段的默认值设成'0'或是其他数字型,如果还不行的话就直接调用SetField方法,方法如下:
$info=new InfoModel();
$info->setField('count',array('exp','count'.'+'.'1'),'id=2');
二、ThinkPhp3.0有了新的改动,必须配合连贯操作where一起使用