Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Listener реализовывал пустой интерфейс ShouldQueue. В этом случае все события обрабатываются очередью в фоне (ну да, надо запустить php artisan queue:listen или php artisan queue:work, в доках по очередям это есть).Post::saving выполняется ДО сохранения модели в базу. В этом методе вы не можете быть уверены в том, что модель сохранится в базу. Отправлять уведомления надо только в том случае, когда пост сохранился, т.е. использовать метод Post::saved$notify_status до отправки уведомлений. В чем проблема менять, когда точно известно, что уведомление ушло — после получения ответа от сервера?protected function onBeforeSave()
{
//Мы проверяем статус статьи – если он «Опубликован», смотрим на статус оповещения, если он еще не «Опубликован»
if ($this->status == self::STATUS_PUBLISHED
&& $this->notify_status < self::STATUS_PUBLISHED){
//то устанавливаемый статус оповещения в «опубикован»
$this->notify_status = self::STATUS_PUBLISHED;
//и «выстреливаем» событие PostPublishedEvent, передавая в него собственный инстанс.
(new OneSignalHandler())->sendNotify($event->post);
}
}
Работа с событиями в Laravel. Рассылка push уведомлений при публикации статьи