如何使用Laravel过滤相同的请求

时间:2016-12-08 14:40:38

标签: laravel real-time

我的代码是

public function store(Request $request){
    $invite = Invite::where('hash', $request->input('invite_token'))->first();

    if($invite->status != 'sent')
        return;

    $invite->update([
        'status' => 'creating_test_instance'
    ]);

    event(new CreatingTestInstance($invite));

    $createTestInstanceJob = new CreateTestInstance($invite);

    dispatch($createTestInstanceJob);
}

如果我同时发送多个相同的请求,则第一个请求无法及时更新状态和

if($invite->status != 'sent') return;

未应用,并且多次创建测试实例。 我可以在一个邀请上只有一个Test实例。 它怎么可能受到保护? 使用数据库事务实现它,但如果您有任何更好的解决方案,我很高兴听到。 谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

尝试替换

$invite->update([
    'status' => 'creating_test_instance'
]);

使用:

$invite->status = 'creating_test_instance';
$invite->save();

看看它是否有任何区别