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

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

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

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 до збереження.

7
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,
        ]);
      }
    });
  }
}

Матеріали за темою «Події»: усе, що ми писали про це українською. Нижче - суміжні теми, якщо шукаєте ширше.

Зараз опубліковано 1 матеріал від 1 автора. Останній матеріал - 23 липня 2026.