Я пытаюсь запустить событие, когда пользователь удален из системы, но я думаю, что он удаляет моего пользователя слишком быстро, поэтому мое событие не работает. Я хочу сделать трансляцию, когда пользователь будет удален.
Вот контроллер:
public function destroy($id)
{
$user = new User();
$user = $user->find($id);
broadcast(new UserWasDeleted($user, Auth::user()))->toOthers();
$user->delete();
return response([
'status' => 'success',
'message' => 'The user was successfully deleted.'
], 200);
}
Это успешно транслируется, если я удалю $ user-> delete (); линия, и не транслируется, когда она там есть.
Я даже попытался настроить прослушиватель для события и удалить пользователя в прослушивателе. Он удаляет пользователя, но по-прежнему не передает.
@Devon ах, просто удаление SerializesModels исправило это. Теперь исследовать, почему лол






Свойство SerializesModels необходимо удалить из событий, связанных с удаленными моделями.
SerializesModels - это признак, который сохраняет идентификатор модели только при сериализации события (или задания) и повторно выбирает модель из базы данных при десериализации события.
Это позволяет процессам в очереди получать свежую модель из базы данных при их запуске, чтобы они не работали с устаревшей информацией, но это будет ненадежно, когда вы удаляете эту строку из базы данных.
Убедитесь, что вы не используете трейт SerializesModels в этом событии, поскольку модель удаляется. Вы также можете использовать события модели вместо того, чтобы полагаться на контроллер для выдачи события, но это вряд ли решит вашу проблему.