laravel - 删除模型时如何触发 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 特征。
SerializesModels 是一个 trait,它只在事件(或作业)被序列化时存储模型的 id,并在事件被反序列化时从数据库中重新获取模型。
这允许排队的进程在运行时从数据库中获取新模型,因此它们不会使用过时的信息运行,但是当您从数据库中删除该行时,这将不可靠。
推荐阅读
- excel - 将值粘贴到工作表后创建下拉列表槽列
- javascript - 使用 vue js cdn 的 html 项目上 IE 上的空白页
- excel - 从 Outlook 中提取电子邮件正文到 excel - 对象“邮件项目”的错误方法“正文”失败
- javascript - 如何在 JavaScript 中加载图像表单本地地址
- node.js - TypeScript 中 createReadStream 的类型应该是什么?
- symfony - 在 symfony 中更改继承(加入)类中的默认标识列名称
- c++ - 带有模板参数的 C++ 大括号初始化
- python - 如何处理 Azure Machine Learning Studio 中数据集的频繁变化?
- java - 如何从 Linux 的输出中删除(过滤掉)特定的 Java Stack-Traces?
- java - 如何通过配置文件激活/停用 Spring Security