Использование репозиториев является альтернативой ORM, то есть в этом случае модель Category не должна иметь методов получения или сохранения себя в БД.
Ваш пример будет выглядеть следующим образом:
class CategoryRepository
{
/*
* @return Category[]
*/
public function getAllCategories()
{
// Извлекаем категории из БД и создаем массив моделей Category
return $categories;
}
}
Соответственно для сохранения категории ваш сервис должен иметь метод CategoryService::save(), в котором будут выполняться необходимые проверки и подготовка данных, а затем вызываться метод репозитория CategoryRepository::save(Category $category).