Есть таблица с двумя полями: id, active
И есть список id (id_list), которые не надо обновлять. Как обновить только те записи в таблице, которые не попадают в список id_list, и у которых active=1
Я пока придумал такие варианты:
1) делаю выборку нужных элементов, а потом обновляю их по одному.
$data = Model::find()->where(['not in', 'id', $id_list])->andWhere(['active' => 1])->all();
foreach($data as $line) {
// обновить элемент
}
2) задаю условие напрямую
Model::updateAll(['active' => 0], 'active = 1 AND id NOT IN ('.implode(',', $id_list).')');
Но что-то ни один из этих вариантов мне не нравится.