Здравствуйте! Для подобной логики я бы использовал репозиторий, который передавал бы через интерфейс в контроллер. Например:
EloquentCategoryRepository implements CategoryRepository {
public function __construct(Category $category)
{
$this->category = $category;
}
public function getRootsByLang($lang)
{
return $this->category->getRoots()->whereLang($lang)->get();
}
}
То же относится к другим методам.
Если же вы не хотите использовать репозиторий, то вместо scope вам необходимо расширить QueryBuilder собственными методами.