Как увеличить на 1 все записи через updateAll в Yii2?

197
26 октября 2017, 10:23

Нужно увеличить на 1 все записи через updateAll. Нужно что-то вроде

Model::updateAll('number = number + 1', $conditions);

но так не выходит - требует массив. Еще пробовал так

Model::updateAll('number' => 'number + 1', $conditions);

но он передает значение просто как строку. Подскажите как это делается?

Answer 1

Можно попробовать так:

$model->updateCounters(array("number "=>"1"), $conditions);

http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#updateCounters()-detail

Хотя возможно надо updateAllCounters. Хоть раньше было можно использовать и updateCounters в таком случае

Answer 2

Пока писал вопрос, разобрался.
Надо было сделать так:

$expression = new Expression('`number` + 1');
Model::updateAll(['number' => $expression], $condition);
READ ALSO
Помогите записать значение в сессию при помощи input PHP

Помогите записать значение в сессию при помощи input PHP

Добрый день! Помогите записать в сессию значение из поля inputХост дает 1 час на сессии, мне какраз этого время хватает

154
Удалить папку с бекслешем

Удалить папку с бекслешем

При попытки удалить директорию, которая содержит обратный слеш - удаляются все папки, которые находятся на том же уровне, что и удаляемая:

178
проблема с селектом syntax error, unexpected '$r' (T_VARIABLE) in

проблема с селектом syntax error, unexpected '$r' (T_VARIABLE) in

привет всем, у меня такая проблема при выполнении etogo

137