validated('order'); return DB::transaction(function () use ($model, $newOrder): RedirectResponse { $groupField = $model->getOrderGroupField(); $query = $model::query() ->whereKeyNot($model) ->whereBetween('order', [min($model->order, $newOrder), max($model->order, $newOrder)]); if ($groupField) { $query->where($groupField, $model->{$groupField}); } $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')); }); } }