*/ protected $fillable = [ 'name', 'slug', 'icon', 'colour', 'description', 'sort_order', 'is_active', 'created_by', 'updated_by', ]; /** @var array */ protected $casts = [ 'is_active' => 'boolean', 'sort_order' => 'integer', ]; /** * Bootstrap the model. */ protected static function booted(): void { static::saving(function (DocumentationCategory $category): void { if (blank($category->slug)) { $category->slug = Str::slug($category->name); } }); } /** * Documents assigned to this category. * * @return HasMany */ public function documents(): HasMany { return $this->hasMany(DocumentationDocument::class, 'documentation_category_id'); } /** * Active category scope. * * @param Builder $query * @return Builder */ public function scopeActive(Builder $query): Builder { return $query->where('is_active', true); } /** * Ordered category scope. * * @param Builder $query * @return Builder */ public function scopeOrdered(Builder $query): Builder { return $query->orderBy('sort_order')->orderBy('name'); } }