Thinkphp2.0 中setInc函数和SetDec函数总结

来源:互联网 发布:佩里西奇 数据 编辑:程序博客网 时间:2024/05/29 09:36

一、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一起使用

 $User = M("User"); // 实例化User对象
 $User->where('id=5')->setInc('score',3); // 用户的积分加3
 $User->where('id=5')->setInc('score'); // 用户的积分加1
 $User->where('id=5')->setDec('score',5); // 用户的积分减5
 $User->where('id=5')->setDec('score'); // 用户的积分减1


原创粉丝点击