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

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

Добавлено: 2019.01.22, 16:04
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]);
не получается. Не пойму как написать

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

Добавлено: 2019.01.24, 10:57
maleks
Вместо
['tr_entry' => 1, 'tr_queue_kpp > :entry']
пишите:
['and', ['tr_entry' => 1], '[[tr_queue_kpp]] > :entry']

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

Добавлено: 2019.01.24, 11:04
ElisDN
['and', ['tr_entry' => 1], ['>', 'tr_queue_kpp', $entry]]

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

Добавлено: 2019.01.24, 14:37
DronTat
Спасибо, работает