Ответ
В Laravel для работы с базой данных на уровне моделей используется Eloquent ORM. Это объектно-ориентированный слой абстракции, который позволяет строить запросы через методы модели.
Основные операции:
// Получение всех записей модели
$users = User::all();
// Получение записей с условиями (Fluent Builder)
$activeUsers = User::where('status', 'active')
->where('age', '>', 18)
->orderBy('created_at', 'desc')
->limit(10)
->get();
// Поиск по первичному ключу
$user = User::find(1);
// Первый результат, удовлетворяющий условию
$user = User::where('email', 'john@example.com')->first();
// Создание новой записи
$user = User::create([
'name' => 'John Doe',
'email' => 'john@example.com',
'password' => Hash::make('secret')
]);
// Массовое обновление
User::where('last_login', '<', now()->subYear())
->update(['status' => 'inactive']);
// Удаление
$user->delete();
User::destroy(1, 2, 3);
// Загрузка отношений (если они определены в модели)
$posts = User::find(1)->posts()->where('published', true)->get();
Ключевые особенности Eloquent:
- Fluent-интерфейс: Цепочка методов для построения запроса.
- Отношения (Relationships): Простое определение связей
hasOne,hasMany,belongsTo,belongsToMany,morphTo. - Мутаторы и Аксессоры: Позволяют форматировать атрибуты при получении и сохранении.
- Scope'ы: Локальные и глобальные scope'ы для повторного использования условий запроса.
- Массовое присвоение: Защита полей через
$fillableили$guarded. - Защита от SQL-инъекций: Параметризованные запросы используются по умолчанию.
Для очень сложных или специфичных запросов, где производительность Eloquent может быть недостаточной, можно напрямую использовать Query Builder через DB::table('users'), но Eloquent предоставляет более выразительный и удобный синтаксис для большинства задач.