Этот вопрос проверяет понимание способов работы с базой данных в Laravel и умение выбирать подходящий инструмент под задачу.
В Laravel есть два основных способа работы с БД: Query Builder и Eloquent. Query Builder работает ближе к SQL и позволяет гибко строить сложные запросы. Eloquent — это ORM, которая работает с моделями и отношениями между ними. Для сложных вложенных запросов и оптимизаций Query Builder обычно удобнее, а для бизнес-логики — Eloquent.
Laravel предоставляет разные уровни абстракции для работы с базой данных.
Определение: Query Builder — это API для программного построения SQL-запросов, а Eloquent — ORM, представляющая таблицы в виде PHP-классов.
Query Builder ближе к SQL и подходит для сложных и оптимизированных запросов.
Пример:
$users = \DB::table('users')
->where('active', true)
->whereIn('id', function ($q) {
$q->select('user_id')->from('orders');
})
->get();
Особенности:
высокая гибкость
удобно писать вложенные запросы
меньше “магии”
Eloquent работает через модели и связи между ними.
Пример:
$users = User::where('active', true)
->with('orders')
->get();
Особенности:
выразительный и читаемый код
работа с отношениями (hasOne, hasMany, belongsTo)
удобен для CRUD и бизнес-логики
Eloquent — стандартный выбор для большинства задач
Query Builder — для сложных запросов, отчётов, оптимизаций
Часто оба подхода комбинируются в одном проекте
Eloquent удобен для повседневной работы с данными, а Query Builder стоит выбирать, когда важна гибкость SQL и контроль над запросами.