getOrderGroupField(); $maxOrderQuery = $model::query(); if ($groupField) { $maxOrderQuery->where($groupField, $model->{$groupField}); } $maxOrder = \intval($maxOrderQuery->max('order')); if ($isDeletion) { $query = $model::query() ->whereKeyNot($model) ->whereBetween('order', [$model->order, $maxOrder]); if ($groupField) { $query->where($groupField, $model->{$groupField}); } $query->decrement('order', 1); return; } $model->order = $maxOrder + 1; } }