get(); foreach ($tenants as $tenant) { $publicSlug = $this->generatePublicSlug($tenant); $tenant->public_slug = $publicSlug; $tenant->save(); echo "Updated {$tenant->name} with public_slug: {$publicSlug}\n"; } } private function generatePublicSlug(Tenant $tenant): string { // Generiere public_slug basierend auf dem Namen $name = strtolower($tenant->name); // Basis-Slug aus dem Namen generieren $baseSlug = str_replace([' ', 'ä', 'ö', 'ü', 'ß'], ['-', 'ae', 'oe', 'ue', 'ss'], $name); $baseSlug = preg_replace('/[^a-z0-9-]/', '', $baseSlug); $baseSlug = preg_replace('/-+/', '-', $baseSlug); // Mehrfache Bindestriche entfernen $baseSlug = trim($baseSlug, '-'); // Spezielle Mappings falls gewünscht if (str_contains($name, 'firma 1')) { $baseSlug = 'firma-1'; } elseif (str_contains($name, 'firma 2')) { $baseSlug = 'firma-2'; } elseif (str_contains($name, 'firma 3')) { $baseSlug = 'firma-3'; } // Stelle sicher, dass public_slug eindeutig ist $counter = 1; $publicSlug = $baseSlug; while (Tenant::where('public_slug', $publicSlug) ->where('id', '!=', $tenant->id) ->exists()) { $publicSlug = $baseSlug . '-' . $counter; $counter++; } return $publicSlug; } }