'boolean', ]; protected static function boot() { parent::boot(); static::creating(function ($category) { $category->slug = $category->generateUniqueSlug($category->name_en); }); static::updating(function ($category) { if ($category->isDirty('name_en')) { $category->slug = $category->generateUniqueSlug($category->name_en, $category->id); } }); } public function projects(): BelongsToMany { return $this->belongsToMany(Project::class, 'project_category'); } public function getNameAttribute(): string { return app()->getLocale() === 'ar' ? $this->name_ar : $this->name_en; } public function getDescriptionAttribute(): ?string { return app()->getLocale() === 'ar' ? $this->description_ar : $this->description_en; } // Helper to generate unique slug public function generateUniqueSlug(string $name, ?int $excludeId = null): string { $slug = Str::slug($name); $original = $slug; $count = 1; while (static::where('slug', $slug) ->when($excludeId, fn($q) => $q->where('id', '!=', $excludeId)) ->exists() ) { $slug = $original . '-' . $count++; } return $slug; } }