validated('order'); return DB::transaction(function () use ($model, $newOrder): RedirectResponse { /** @phpstan-ignore-next-line */ $groupField = $model->getOrderGroupField(); $query = $model::query() ->whereKeyNot($model) /** @phpstan-ignore-next-line */ ->whereBetween('order', [min($model->order, $newOrder), max($model->order, $newOrder)]); if ($groupField) { $query->where($groupField, $model->{$groupField}); } /** @phpstan-ignore-next-line */ $model->order < $newOrder ? $query->decrement('order', 1) : $query->increment('order', 1); $model->order = $newOrder; if (!$model->saveOrFail()) { return back()->with('error', trans('crud.messages.order_not_changed')); }; return back()->with('success', trans('crud.messages.order_changed')); }); } }