Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас

Статті за тегом «Події»

Статті, новини, туторіали та переклади від учасників спільноти

No results.
Tips 23 липня 2026

Події моделей - хуки в життєвий цикл Eloquent

Треба надіслати email після реєстрації? Або залогувати видалення поста?

Model Events дозволяють підключатися до create/update/delete.

Доступні події:

  • creating / created
  • updating / updated
  • deleting / deleted
  • saving / saved

Два підходи:

  • Окремі слухачі (listeners)
  • booted() у моделі (швидкий варіант)

Порада: використовуйте creating для генерації UUID/slug до збереження.

class User extends Model
{
  protected static function booted()
  {
    // Перед створенням
    static::creating(function ($user) {
      $user->uuid = Str::uuid();
    });

    // Після створення
    static::created(function ($user) {
      $user->sendWelcomeEmail();
    });

    // Перед видаленням - каскад
    static::deleting(function ($user) {
      $user->posts()->delete();
    });

    // Повернення false скасовує операцію
    static::creating(function ($user) {
      if ($user->isBanned()) {
        return false;
      }
    });
  }
}
// Оновлення пов'язаних моделей
class Order extends Model
{
  protected static function booted()
  {
    static::created(function ($order) {
      $order->user->increment('total_orders');
    });

    static::deleted(function ($order) {
      $order->user->decrement('total_orders');
    });

    static::updating(function ($order) {
      if ($order->isDirty('status')) {
        ActivityLog::create([
          'order_id' => $order->id,
          'old_status' => $order->getOriginal('status'),
          'new_status' => $order->status,
        ]);
      }
    });
  }
}