Как запустить событие Laravel (5.6) при удалении модели?

Я пытаюсь запустить событие, когда пользователь удален из системы, но я думаю, что он удаляет моего пользователя слишком быстро, поэтому мое событие не работает. Я хочу сделать трансляцию, когда пользователь будет удален.

Вот контроллер:

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 (); линия, и не транслируется, когда она там есть.

Я даже попытался настроить прослушиватель для события и удалить пользователя в прослушивателе. Он удаляет пользователя, но по-прежнему не передает.

Убедитесь, что вы не используете трейт SerializesModels в этом событии, поскольку модель удаляется. Вы также можете использовать события модели вместо того, чтобы полагаться на контроллер для выдачи события, но это вряд ли решит вашу проблему.

Devon 27.06.2018 16:24

@Devon ах, просто удаление SerializesModels исправило это. Теперь исследовать, почему лол

Octoxan 27.06.2018 16:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
3
2
752
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Свойство SerializesModels необходимо удалить из событий, связанных с удаленными моделями.

SerializesModels - это признак, который сохраняет идентификатор модели только при сериализации события (или задания) и повторно выбирает модель из базы данных при десериализации события.

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

Другие вопросы по теме