🧱 Суть
В Laravel у каждого слоя есть своя ответственность:
- Model – работает с данными и базой данных.
- Provider – настраивает и подключает сервисы приложения.
📦 Проблема
1. Путают модели с обычными классами
ShortLink::find(1);Модель – это не только структура данных, но и инструмент для работы с БД.
2. Непонятно, зачем нужны Providers
app/Providers/Кажется, что это просто папка с настройками, хотя она отвечает за конфигурацию приложения.
✅ Решение
Разделять ответственность компонентов:
- Model → работа с данными
- Provider → настройка приложения
💻 Код
Models
Модель представляет таблицу базы данных.
Получение данных:
ShortLink::all();ShortLink::find(1);Поиск:
ShortLink::where('code', 'abc123')->first();Создание записи:
ShortLink::create([ 'code' => 'abc123', 'original_url' => 'https://...']);Модель отвечает за:
- получение данных
- создание
- обновление
- удаление
- связи между таблицами
Providers
Provider – место, где Laravel настраивает приложение и регистрирует сервисы.
Регистрация сервиса:
app()->bind(UserService::class, function () { return new UserService();});Обычно Providers используются для:
- регистрации сервисов
- подключения библиотек
- настройки приложения
- конфигурации зависимостей
Главный Provider:
AppServiceProviderРасположение:
app/Providers/Как всё работает вместе
Request
↓
Controller
↓
Model
↓
DatabaseProvider участвует заранее – он настраивает приложение до обработки запросов.
🎯 Вывод
- Model – слой работы с базой данных
- Provider – слой настройки приложения
- Controller использует Model для работы с данными
- Provider подготавливает всё необходимое для работы приложения