Какая ORM используется в Laravel?

«Какая ORM используется в Laravel?» — вопрос из категории Laravel, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Laravel используется встроенная ORM Eloquent. Это реализация паттерна Active Record, которая предоставляет простой и выразительный синтаксис для взаимодействия с базой данных.

Ключевые возможности Eloquent:

  • Модели: Каждая таблица БД представлена классом-моделью.
  • Отношения: Простое объявление связей hasOne, hasMany, belongsTo, belongsToMany, morphTo.
  • Конструктор запросов: Fluent-интерфейс для построения запросов: where(), orderBy(), groupBy(), with() для жадной загрузки.
  • События моделей: Хуки на создание, обновление, удаление записей.
  • Мягкое удаление: Трейт SoftDeletes.
  • Мутаторы и аксессоры: Для форматирования данных при чтении и записи.

Пример работы:

// Модель User, связанная с таблицей 'users'
class User extends Model {
    // Связь один-ко-многим с моделью Post
    public function posts() {
        return $this->hasMany(Post::class);
    }
}

// Использование в коде
$activeUsers = User::where('is_active', true)
                  ->with('posts') // Жадная загрузка постов
                  ->orderBy('name')
                  ->get();

foreach ($activeUsers as $user) {
    echo $user->name;
    foreach ($user->posts as $post) { // Отношение доступно как свойство
        echo $post->title;
    }
}

Eloquent отлично интегрирован в экосистему Laravel (миграции, фабрики, сидеры) и покрывает 95% потребностей. Для сложных аналитических запросов иногда используется DB facade для написания чистого SQL.