То что ты назвал - repository, service layer, provider это не так сложно как кажется.
Repository - это прослойка над моделью, обычно один класс для каждой модели в котором собраны все функции для работы с моделью, т.е. все нужные запросы к БД через модель, чтобы не писать их в самой модели.
Service layer - прослойка между контроллером и репозиторием, обычно один класс для каждой модели(репозитория). Здесь обычно пишут обработку данных полученных из репозитория чтобы потом можно было сразу вставить во view. Как правило в service layer есть методы create read update delete - как в контроллере и в них пишут ту логику, которую обычно писали в контроллере только без привязки ко view.
Sevice Provider - некий код который кочует из проекта в проект и делает например авторизацию пользователя или кеширование. В Laravel есть свой механизм service provider.
Как правило service layer и repository добавляют чтобы всю логику класть туда и сохранить модели и контроллеры очень простыми. Например в методах контроллера может быть банальный вызов методов service layer с привязкой ко view и больше никакой логики.
Посмотри вот этот пример
https://blog.eduonix.com/web-programming-tutorials... и сразу станет понятно.
В этом подходе нет ничего сложного иначе никто бы не пользовался.
Можешь сам попробовать написать тот же блог но только с service layer и repository - это проще чем кажется.