🧱 Суть

В 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

Database

Provider участвует заранее – он настраивает приложение до обработки запросов.

🎯 Вывод

  • Model – слой работы с базой данных
  • Provider – слой настройки приложения
  • Controller использует Model для работы с данными
  • Provider подготавливает всё необходимое для работы приложения

🔗 Связано