Трюки Laravel Eloquent относятся к продвинутым методам и методам, которые можно использовать с Eloquent ORM (объектно-реляционное сопоставление) Laravel для улучшения задач запросов и манипуляций с базой данных. Вот некоторые часто используемые методы с примерами кода:
- Области запросов.
Области запросов позволяют определять многократно используемые ограничения запросов в моделях Eloquent. Они полезны для инкапсуляции общей логики запросов. Например:
// Model
class User extends Model
{
public function scopeActive($query)
{
return $query->where('active', true);
}
}
// Usage
$activeUsers = User::active()->get();
- Жаркая загрузка.
Женская загрузка помогает оптимизировать запросы к базе данных за счет предварительного выбора связанных моделей. Это уменьшает количество выполняемых запросов. Например:
// Model
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
// Usage
$posts = Post::with('comments')->get();
- Акцессоры и мутаторы.
Аксессуары позволяют вам определять средства доступа к пользовательским атрибутам, а мутаторы позволяют вам определять собственные установщики атрибутов. Например:
// Model
class User extends Model
{
public function getFullNameAttribute()
{
return $this->first_name . ' ' . $this->last_name;
}
public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = ucfirst($value);
}
}
// Usage
$user = User::find(1);
echo $user->full_name; // Accessor
$user->first_name = 'john'; // Mutator
- События модели.
События модели позволяют подключаться к различным точкам жизненного цикла модели Eloquent. Вы можете выполнять такие действия, как отправка уведомлений, обновление связанных моделей и т. д. Например:
// Model
class Order extends Model
{
protected static function booted()
{
static::created(function ($order) {
// Perform some actions after the order is created
});
}
}
- Методы сбора данных.
Коллекции Eloquent предоставляют богатый набор методов для манипулирования и преобразования данных. К этим методам относятсяmap(),filter(),pluck(),groupBy()и многие другие.. Например:
$users = User::all();
$names = $users->pluck('name');
$activeUsers = $users->filter(function ($user) {
return $user->active;
});