Ответ
В 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.