diff --git a/events.md b/events.md index 6b6024be..3df89eb2 100644 --- a/events.md +++ b/events.md @@ -1,5 +1,5 @@ --- -git: e75354ea889c0d73fcc77fe28c3f8aa13407955d +git: e6652f21e123688f6abf128b85a7f96dd7eceeb4 --- # События (Events) @@ -781,6 +781,26 @@ class OrderShipped implements ShouldDispatchAfterCommit } ``` + +### Отсрочка событий + +Отложенные события позволяют отложить отправку событий модели и выполнение прослушивателей событий до завершения определённого блока кода. Это особенно полезно, когда необходимо гарантировать, что все связанные записи будут созданы до срабатывания прослушивателей событий. + +Чтобы отложить события, предоставьте замыкание для метода `Event::defer()`: + +```php +use App\Models\User; +use Illuminate\Support\Facades\Event; + +Event::defer(function () { + $user = User::create(['name' => 'Victoria Otwell']); + + $user->posts()->create(['title' => 'My first post!']); +}); +``` + +Все события, инициированные в замыкании, будут отправлены после его выполнения. Это гарантирует, что прослушиватели событий будут иметь доступ ко всем связанным записям, созданным во время отложенного выполнения. Если в замыкании возникнет исключение, отложенные события не будут отправлены. + ## Подписчики событий