删除模型后如何触发Laravel(5.6)事件?

时间:2018-06-27 14:11:58

标签: laravel

我正在尝试从系统中删除用户时触发事件,但我认为它删除用户的速度过快,因此我的事件无法正常工作。我想做的是在删除用户后播放广播。

这里是控制器:

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(),此广播将成功广播;线路,并且在那里时不会广播。

我什至尝试为事件设置侦听器,并在侦听器中删除用户。它删除了用户,但仍然不广播。

1 个答案:

答案 0 :(得分:2)

需要从处理已删除模型的事件中删除SerializesModels特性。

SerializesModels是一个特征,它仅在序列化事件(或作业)时存储模型的ID,而在未序列化事件时从数据库中重新获取模型。

这允许排队的进程在运行时从数据库中获取新的模型,因此它们不会使用过时的信息运行,但是当您从数据库中删除该行时,这将是不可靠的。