where(function ($query) use ($defaultSlug) { $query->where('slug', $defaultSlug) ->orWhere('slug', 'like', $defaultSlug.'-%'); }); if ($excludeId) { $query->where('id', '!=', $excludeId); } $existingSlugs = $query->pluck('slug'); $maxSuffix = $existingSlugs ->map(function (string $slug) use ($defaultSlug): ?int { if ($slug === $defaultSlug) { return 0; } elseif (preg_match('/^'.preg_quote($defaultSlug, '/').'-(\d+)$/', $slug, $matches)) { return (int) $matches[1]; } return null; }) ->filter(fn (?int $suffix) => $suffix !== null) ->max() ?? 0; return $existingSlugs->isEmpty() ? $defaultSlug : $defaultSlug.'-'.($maxSuffix + 1); } }