Как обновить поле, увеличив значение в пакетном обновлении - PullRequest
0 голосов
/ 29 сентября 2018

Пока я пытался обновить таблицу баланса, как показано ниже.Работает нормально.

$values = array(
    array('id'=>10,'c1'=>101),
    array('id'=>11,'c1'=>102)
);
$this->db->update_batch('balance',$values,'id');

Хотелось бы узнать, как обновить значение поля = предыдущее значение + новое значение , значит, c1 = c1 + 101 inобновить пакетный массив.Я нашел

$ this-> db-> set ('c1', 'c1 + 101', FALSE);

было бы полезно.Но я понятия не имею, как использовать это в пакетной операции.

Я пробовал array('id'=>10,'c1'=>'c1 + 101'), но это не работает.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

да, вы можете сделать это и с 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)
0 голосов
/ 29 сентября 2018

Вы пытаетесь это

$this->db->set('c1', 'c1+101', FALSE)

до

$this->db->set('c1', '`c1+101`', FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...