'boolean', ]; public function parent(): BelongsTo { return $this->belongsTo(CourseCategory::class, 'parent_id'); } public function children(): HasMany { return $this->hasMany(CourseCategory::class, 'parent_id'); } public function courses(): HasMany { return $this->hasMany(Course::class, 'category_id'); } public function scopeTree($query) { return $query->with(['children', 'children.children'])->withCount('courses')->orderBy('sort_order')->get()->filter(function($cat) { return is_null($cat->parent_id); }); } }