Страница 1 из 1

Странное поведение db->createCommand()->update

Добавлено: 2019.08.21, 18:30
ilya.zvv
Добрый день!
Текущая версия фреймворка: 2.0.11.2
Столкнулся со странным поведением генератора запроса:
Надо создать запрос, который бы обновлял поле на основе его же значения, в моем случае обновление битовой маски:

Код: Выделить всё

UPDATE `items_list` SET `item_state` = `item_state` | 1 WHERE `id`='59885'
для этого пытаюсь генерировать запрос следующим кодом:

Код: Выделить всё

Yii::$app->db->createCommand()->update('items_list', ['item_state' => 'item_state | 1'], ['IN', 'id', $itemsIdArray])->execute();
А в результате генерируется запрос вида:

Код: Выделить всё

UPDATE `items_list` SET `item_state`=0 WHERE `id`='59885'
Это какая-то защита от инъекций или я что-то делаю не так?

Re: Странное поведение db->createCommand()->update

Добавлено: 2019.08.22, 15:43
ilya.zvv
PS
Версию обновил до 2.0.25
Экранирование имени поля [[item_state]] тоже не помогает.

Re: Странное поведение db->createCommand()->update

Добавлено: 2019.08.22, 15:47
samdark
Оберните в Expression.

Re: Странное поведение db->createCommand()->update

Добавлено: 2019.08.23, 14:23
ilya.zvv
samdark писал(а): 2019.08.22, 15:47 Оберните в Expression.
Спасибо! Помогло. Можно закрывать тему.