PHP: Eloquent (ORM)
2026-02-26 19:57 Diff

Модель — это воплощение понятия предметной области в коде приложения. В Eloquent каждая модель представлена классом в коде и таблицей в базе данных:

  1. Модель = Класс только в классовых языках. Чисто технически она может быть чем угодно, это зависит от языка.
  2. Связь Модель-Таблица — это особенность паттерна Active Record. В другом подходе, называемом Data Mapper, всё может быть по-другому.

Единственное, что нужно для работы модели – создать таблицу в базе данных. В веб-фреймворках это делается через миграции, которые создаются автоматически при генерации модели из командной строки:

В нашем же случае используется файл src/schema.php, в котором есть определение таблицы:

Этого описания достаточно для начала работы. Теперь можно создавать сущности, сохранять их в базу и обновлять:

Этот код работает благодаря подходу "соглашения вместо конфигурации" (Convention Over Configuration). Нам не пришлось явно указывать имя таблицы, с которой связана модель. Eloquent автоматически получила её имя, выполнив приведение имени класса к нижнему регистру и сделав его во множественном числе.

Кроме того, Eloquent проанализировала структуру этой таблицы для определения первичного ключа, полей и их типов. Эта информация используется внутри модели для сохранения, обновления и загрузки данных в код. Из примера выше видно, что при создании или обновлении сущности, используется метод save(), а Eloquent сама распознает что сейчас происходит: создание или обновление.

После того как сущность сохранена в базу, её можно извлечь. Самый простой способ сделать это, воспользоваться статическим методом find($id). Он выполняет поиск по первичному ключу.