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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
ilya.zvv
Сообщения: 3
Зарегистрирован: 2019.08.21, 18:07

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

Сообщение ilya.zvv » 2019.08.21, 18:30

Добрый день!
Текущая версия фреймворка: 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'
Это какая-то защита от инъекций или я что-то делаю не так?

ilya.zvv
Сообщения: 3
Зарегистрирован: 2019.08.21, 18:07

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

Сообщение ilya.zvv » 2019.08.22, 15:43

PS
Версию обновил до 2.0.25
Экранирование имени поля [[item_state]] тоже не помогает.

Аватара пользователя
samdark
Администратор
Сообщения: 9134
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark » 2019.08.22, 15:47

Оберните в Expression.

ilya.zvv
Сообщения: 3
Зарегистрирован: 2019.08.21, 18:07

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

Сообщение ilya.zvv » 2019.08.23, 14:23

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

Закрыто