Нужно менять порядок пунктов меню. Сортируются они полем 'order', который имеет в базе статус unique.
Нужно сделать функционал смены мест пунктов меню - пункт "контакт" был на втором месте, стал на первом. Решил в лоб сначала
public static function changeOrder($cur, $new) {
if ((isset($cur)) && (isset($new)) && ($cur !== $new)) {
$currentModel = parent::findOne($cur);
$newModel = parent::findOne($new);
$currentModel->order = $new;
$newModel->order = $cur;
if ($currentModel->save() && $newModel->save()) {
echo 'works';
} else {
var_dump($currentModel->errors);
var_dump($newModel->errors);
}
}
}
Но, конечно, оно не сработало, так как при записи уже существует такой "order" и валидация не проходит. Как решать такие вещи? Через временную переменную?