Я хочу обновить значение столбца с текущим значением столбца плюс прирост. Моя таблица выглядит следующим образом:
id | menu | priority __________________________ 1 | One | 2 2 | Two | 3 3 | Three | 1
Простой запрос, который я пробовал, работает:
update table set priority=priority+1 where id=2
в кодеиндигнере:
$update_new_pri=$this->db->where('id',$menu_ids[$i])->update($this->table['menu'],array('menu_priority'=>'menu_priority+1'));
Но это не работает.
Согласно документам
Вы также можете использовать функцию $ this-> db-> set () при выполнении обновлений базы данных.
$this->db->where('id',$menu_ids[$i]) ->set('menu_priority', 'menu_priority+1', FALSE) ->update($this->table['menu']);
set () также примет дополнительный третий параметр ($ escape), который предотвратит экранирование данных, если установлено значение FALSE. Чтобы проиллюстрировать разницу, здесь задано (), используемое как с параметром escape, так и без него.