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

Событие updated

Событие updated срабатывает после того, как модель была успешно обновлена в базе данных. Это событие является частью системы событий Eloquent и позволяет выполнять дополнительный код после изменения записи. Событие вызывается только в том случае, если модель действительно была обновлена и изменения сохранены. Первым параметром в метод передаётся экземпляр обновлённой модели.

Синтаксис

Для работы с событием updated необходимо определить его в свойстве $dispatchesEvents модели или использовать статический метод updated:

<?php use AppModelsPost; Post::updated(function ($post) { // Handle updated event }); ?>

Пример

Давайте создадим модель Post и определим событие updated в свойстве $dispatchesEvents. При обновлении записи мы будем логировать это действие:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; use AppEventsPostUpdated; class Post extends Model { protected $dispatchesEvents = [ 'updated' => PostUpdated::class, ]; } ?>

Теперь создадим класс события PostUpdated:

<?php namespace AppEvents; use IlluminateFoundationEventsDispatchable; use AppModelsPost; class PostUpdated { use Dispatchable; public $post; public function __construct(Post $post) { $this->post = $post; } } ?>

И слушатель для обработки события:

<?php namespace AppListeners; use AppEventsPostUpdated; class LogPostUpdate { public function handle(PostUpdated $event) { $post = $event->post; // Log post update action $res = "Post updated: " . $post->id; echo $res; } } ?>

Пример обновления записи в контроллере:

<?php namespace AppHttpControllers; use AppModelsPost; use AppEventsPostUpdated; class PostController extends Controller { public function update() { $post = Post::find(1); $post->title = 'article updated'; $post->save(); $res = $post->title; echo $res; } } ?>

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

"article updated" "Post updated: 1"

Пример

Давайте используем статический метод updated для обработки события. В этом примере после обновления модели мы очистим кеш:

<?php namespace AppProviders; use IlluminateFoundationSupportProvidersEventServiceProvider; use AppModelsPost; class EventServiceProvider extends EventServiceProvider { public function boot() { Post::updated(function ($post) { // Clear cache for this post $res = "Cache cleared for post: " . $post->id; echo $res; }); } } ?>

Теперь обновим модель через метод update:

<?php use AppModelsPost; $post = Post::find(2); $post->update([ 'text' => 'New content for article' ]); $res = $post->text; echo $res; ?>

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

"New content for article" "Cache cleared for post: 2"

Пример

Давайте создадим модель Category и используем событие updated для отправки уведомления администратору при обновлении категории:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Category extends Model { protected $dispatchesEvents = [ 'updated' => 'AppEventsCategoryUpdated', ]; public function getCategoryName() { return $this->name; } } ?>

Создадим класс события:

<?php namespace AppEvents; use IlluminateFoundationEventsDispatchable; use AppModelsCategory; class CategoryUpdated { use Dispatchable; public $category; public $oldName; public $newName; public function __construct(Category $category) { $this->category = $category; $this->oldName = $category->getOriginal('name'); $this->newName = $category->name; } } ?>

И слушатель для отправки уведомления:

<?php namespace AppListeners; use AppEventsCategoryUpdated; class SendCategoryUpdateNotification { public function handle(CategoryUpdated $event) { $old = $event->oldName; $new = $event->newName; $id = $event->category->id; $res = "Category $id updated: $old -> $new"; echo $res; } } ?>

Пример обновления категории:

<?php use AppModelsCategory; $category = Category::find(1); $category->name = 'new category'; $category->save(); $res = $category->getCategoryName(); echo $res; ?>

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

"new category" "Category 1 updated: old category -> new category"

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

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