我正在尝试从系统中删除用户时触发事件,但我认为它删除用户的速度过快,因此我的事件无法正常工作。我想做的是在删除用户后播放广播。
这里是控制器:
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(),此广播将成功广播;线路,并且在那里时不会广播。
我什至尝试为事件设置侦听器,并在侦听器中删除用户。它删除了用户,但仍然不广播。
答案 0 :(得分:2)
需要从处理已删除模型的事件中删除SerializesModels特性。
SerializesModels是一个特征,它仅在序列化事件(或作业)时存储模型的ID,而在未序列化事件时从数据库中重新获取模型。
这允许排队的进程在运行时从数据库中获取新的模型,因此它们不会使用过时的信息运行,但是当您从数据库中删除该行时,这将是不可靠的。