Как поменять местами значения полей модели?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Trent
Сообщения: 13
Зарегистрирован: 2019.04.25, 08:43

Как поменять местами значения полей модели?

Сообщение Trent »

Добрый день. Нужно сделать сортировку пунктов меню в модели Menu (свой класс). Менять необходимо order, которое в базе имеет поле unique. Сначала решил в лоб

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

public static function changeOrder($current, $new) {
 $currentModel = Menu::findOne($current);
 $newModel = Menu::findOne($new);
 $currentModel->order = $new;
 $newModel->order = $current;
 $currentModel->save();
 $newModel-save();
}
Это, конечно, не сработало, так как на момент сохранения такой order в базе есть и не проходит провереку на уникальность. Что делать в этом случае?
Использовать временную переменную или есть какой то способ и я зря загоняюсь?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Как поменять местами значения полей модели?

Сообщение samdark »

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

$newModel->order = temp value;
$newModel->save();

$currentModel->order = $new;
$newModel->order = $current;

$currentModel->save();
$newModel-save();
Ответить