route()->parameterNames); $className = Str::ucfirst(Str::lower($params->get($params->count() - 2))); $className = "\\App\\Models\\$className"; if (!class_exists($className)) { throw new \RuntimeException("The $className class doesn't exist."); } /** @var \Illuminate\Database\Eloquent\Model|null */ $model = $className::where($model->getRouteKeyName(), $model->getRouteKey())->first(); if (!$model) { return back()->with('error', trans('crud.messages.order_not_changed')); } return DB::transaction(function () use ($request, $className, $model) { /** @var \Illuminate\Database\Eloquent\Model|null */ $tmp = $className::where('order', $request->direction ? '<' : '>', $model->order) ->orderBy('order', $request->direction ? 'DESC' : 'ASC')->first(); if (!$tmp) { return back()->with('error', trans('crud.messages.order_not_changed')); } $newOrder = $tmp->order; $tmp->order = $model->order; $model->order = $newOrder; $tmp->saveOrFail(); $model->saveOrFail(); Session::flash('success', trans('crud.messages.order_changed')); return back(); }); } }