# 数据更新

# 简单数据更新

//自动从model获取表名
$this->where('id', 1)->update([
    'status' => 1,
    'stime' => '2015-05-16'
]);
//指定表名为user
$this->where('id', 1)->update('user', [
    'status' => 1,
    'stime' => '2015-05-16'
]);

# 复杂更新

某些字段自增自减/包含运算/mysql函数

$this->where('id', 1)->update('user', [
    'status' => 0,
    'count' => ['inc' =>2], //自增2,
    'count2' => ['dec' => 2], //自减2,
    'total' => ['count1' => ['+' => 2]], // `total` = `count1`+2
    'utime' => ['column' => 'ctime'],//更新的时候utime=ctime字段的值
    'ip' => [
        'func' => ['concat' => ["1", '`username`', '2']]
    ] // `ip` = concat(1, `username`, 2)   //使用函数字段名用``引起来
]);

# 更新json字段中的某个字段

$this->where('id', 1)->update([
    'tjson' => [
        'func' => [
            'json_set' => ['`tjson`', '$.id', 5]
        ]
    ]
]);

# upSet


$this->upSet(['id' => 1, 'test' => 'bbb'], ['test' => 'ccc']);

//生成的语句为 INSERT INTO xxx SET `id`= '1',`test`= 'bbb' ON DUPLICATE KEY UPDATE `id`= '1',`test`= 'ccc'

# 获取上一次数据更新影响的行数

调用update方法添加数据时会自动返回affectedRows。如果还要单独获取可如下操作:

$this->affectedRows();