$modelClass */ public static function forModel(string $modelClass, string $source, ?int $ignoreId = null): string { $baseSlug = Str::slug($source); $slug = $baseSlug !== '' ? $baseSlug : 'item'; $baseSlug = $slug; $counter = 1; while ( $modelClass::withTrashed() ->where('slug', $slug) ->when($ignoreId, fn ($query) => $query->where('id', '!=', $ignoreId)) ->exists() ) { $slug = "{$baseSlug}-{$counter}"; $counter++; } return $slug; } }