"Глубокое погружение в Eloquent ORM: работа с моделями и коллекциями"
Eloquent ORM — одна из главных причин популярности Laravel. Она позволяет работать с базой данных через удобные PHP-модели вместо ручного SQL.
В этой статье разберём:
- Laravel model;
- CRUD-операции;
- Eloquent collections;
- scopes;
- массовое заполнение;
- query builder;
- производительность.
Что такое Eloquent ORM
Laravel Eloquent ORM — ActiveRecord-реализация для работы с database.
Каждая таблица представляется моделью.
Создание модели
php artisan make:model Post
Модель появится в:
app/Models/Post.php
Пример модели
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'title',
'content',
];
}
CRUD в Eloquent
Создание записи
Post::create([
'title' => 'Laravel',
'content' => 'Eloquent ORM',
]);
Получение данных
Все записи
Post::all();
По ID
Post::find(1);
where()
Post::where('published', true)->get();
Обновление записи
$post = Post::find(1);
$post->title = 'Updated';
$post->save();
Удаление записи
$post->delete();
Mass Assignment
Laravel защищает модели через fillable.
protected $fillable = [
'title',
'content',
];
Hidden Fields
protected $hidden = [
'password',
];
Eloquent Collections
Laravel collections — мощный инструмент обработки данных.
Пример:
$posts->filter();
$posts->map();
$posts->groupBy();
Query Scopes
Local Scope
public function scopePublished($query)
{
return $query->where('published', true);
}
Использование:
Post::published()->get();
Accessors и Mutators
public function getTitleAttribute($value)
{
return strtoupper($value);
}
Soft Deletes
use SoftDeletes;
Migration:
$table->softDeletes();
Eager Loading
Post::with('comments')->get();
Это помогает избежать N+1 проблемы.
Query Builder vs Eloquent
Eloquent удобнее для бизнес-логики.
Query Builder быстрее для сложных SQL-запросов.
Оптимизация Eloquent
Рекомендуется:
- использовать eager loading;
- минимизировать select *;
- кешировать запросы;
- использовать indexes;
- избегать N+1.
Итоги
Laravel Eloquent ORM делает работу с database максимально удобной.
С помощью моделей и коллекций можно:
- быстро создавать CRUD;
- строить сложные запросы;
- работать со связями;
- писать чистый и читаемый код.
Eloquent остаётся одной из лучших ORM в PHP ecosystem.