到目前为止,我已经尝试更新余额表,如下所示。它工作正常。
$values = array(
array('id'=>10,'c1'=>101),
array('id'=>11,'c1'=>102)
);
$this->db->update_batch('balance',$values,'id');
我想知道如何在更新批处理数组中更新字段值 = 以前的值 + 新值,意思是,c1= c1 + 101。我发现
$this->db->set('c1','c1 + 101',FALSE(;
会有所帮助。但我不知道如何在批量操作中使用它。
我已经尝试过array('id'=>10,'c1'=>'c1 + 101')
但它不起作用。
是的,你也可以用update_batch做到这一点。
$data = [
[
'id' => 10 ,
'c1' => '(c1+101)' ,
],
[
'id' => 11,
'c1' => '(c1+102)' ,
]
];
$this->db->set_update_batch($data,'id',FALSE);
$this->db->update_batch('mytable',null,'id');
生成的查询:
UPDATE `mytable` SET c1 = CASE
WHEN id = 10 THEN (c1+101)
WHEN id = 11 THEN (c1+102)
ELSE c1 END
WHERE id IN(10,11)
你试试这个
$this->db->set('c1', 'c1+101', FALSE)
自
$this->db->set('c1', '`c1+101`', FALSE)