Как правильно записать условия updateAllCounters?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
DronTat
Сообщения: 11
Зарегистрирован: 2017.12.19, 14:29

Как правильно записать условия updateAllCounters?

Сообщение DronTat »

Использовалась раньше запись:

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

$modelTransportQueue = TransportQueueKpp::find()->where(['tr_entry' => 1])->andWhere('tr_queue_kpp > :entry',[':entry' => 1])->all();
        foreach ($modelTransportQueue as $transport) {
            $transport->tr_queue_kpp = $transport->tr_queue_kpp - 1;
            $transport->save();
        }
Хочу уменьшить количество обращений в БД, и попробовал преобразовать все это в:

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

TransportQueueKpp::updateAllCounters(['tr_queue_kpp' => -1], ['tr_entry' => 1, 'tr_queue_kpp > :entry'], [':entry' => 1]);
не получается. Не пойму как написать
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Как правильно записать условия updateAllCounters?

Сообщение maleks »

Вместо
['tr_entry' => 1, 'tr_queue_kpp > :entry']
пишите:
['and', ['tr_entry' => 1], '[[tr_queue_kpp]] > :entry']
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как правильно записать условия updateAllCounters?

Сообщение ElisDN »

['and', ['tr_entry' => 1], ['>', 'tr_queue_kpp', $entry]]
DronTat
Сообщения: 11
Зарегистрирован: 2017.12.19, 14:29

Re: Как правильно записать условия updateAllCounters?

Сообщение DronTat »

Спасибо, работает
Ответить