如何更新数据cakephp并获取受影响的行

时间:2018-01-08 09:07:38

标签: cakephp

我想查询这样的SQL:

update table set `status` = 2 where id=1 and `status`=1  

在哪里获得受影响的行。我找到了doc, 但如何更新status并使用sql中的位置? 我的cakephp版本是2.4.6。

更新已解决的:
现在我最终使这个函数成为:

public function updateById($id,$data,$status = ''){
    if( empty($id) ) {
        return false;
    }
    $conditions = array();
    $conditions['id'] = $id;
    if($status != ''){
        $conditions['status'] = $status;
    }
    $this->updateAll($data, $conditions);
    return $this->getAffectedRows();

我在控制器中调用这个函数:

$this->MyModel->updateById(5, array('views'=>100,'status'=>2), 1);

这可以确保记录从status 1更新到2

1 个答案:

答案 0 :(得分:2)

对于Update,单个字段cakephp有方法调用

saveField()

Doc

或者您可以使用方法调用

updateAll() 

Doc

对于受影响的行,cakephp有方法调用

getAffectedRows()

Doc