Это не то, как я бы делал это, используя отношения, но хитрый способ был бы:
public function childCount(){
return DB::table('categories')->where('slug', 'LIKE', $this->slug . '%')->count() - 1;
}
Чтобы получить страницы, возможно:
public function pageCount(){
return Page::whereIn('category_id',
DB::table('categories')->select('id')->where('slug', 'LIKE', $this->slug . '%')->get()->pluck('id')
)->count();
}
2 запроса, которые, возможно, можно было бы оптимизировать, но которые будут работать