РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
155 of 1392 menu

Метод observe

Метод observe позволяет назначить класс-наблюдатель для модели Eloquent. Наблюдатель содержит методы, соответствующие событиям модели: creating, created, updating, updated, saving, saved, deleting, deleted, retrieved, restoring, restored, replicating, forceDeleting и forceDeleted. Первым параметром передаётся имя класса наблюдателя. Метод вызывается статически на модели и регистрирует наблюдателя для всех событий модели.

Синтаксис

<?php Model::observe(ObserverClass::class); ?>

Пример

Давайте создадим наблюдатель для модели Article и зарегистрируем его:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected $fillable = ['title', 'content', 'status']; } ?>
<?php namespace AppObservers; use AppModelsArticle; class ArticleObserver { public function creating(Article $article): void { $article->status = 'draft'; } public function created(Article $article): void { // Логирование создания статьи } } ?>
<?php namespace AppProviders; use AppModelsArticle; use AppObserversArticleObserver; use IlluminateSupportServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot(): void { Article::observe(ArticleObserver::class); } } ?>

Теперь при создании новой статьи автоматически будет устанавливаться статус 'draft':

<?php use AppModelsArticle; $article = Article::create([ 'title' => 'New article', 'content' => 'Content text' ]); echo $article->status; ?>

Результат выполнения кода:

"draft"

Пример

Давайте используем несколько событий в одном наблюдателе для отслеживания изменений:

<?php namespace AppObservers; use AppModelsArticle; class ArticleObserver { public function retrieved(Article $article): void { // Действие при получении модели } public function updating(Article $article): void { // Проверка перед обновлением $article->updated_at = now(); } public function deleted(Article $article): void { // Действие после удаления } } ?>
<?php use AppModelsArticle; use AppObserversArticleObserver; Article::observe(ArticleObserver::class); $article = Article::find(1); $article->title = 'Updated title'; $article->save(); echo $article->updated_at; ?>

Результат выполнения кода:

"2026-09-08 12:30:45"

Смотрите также

  • метод save,
    который сохраняет модель в базу данных
  • метод update,
    который обновляет модель
  • метод delete,
    который удаляет модель
  • метод withoutEvents,
    который отключает события модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить