我的代码是
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实例。 它怎么可能受到保护? 使用数据库事务实现它,但如果您有任何更好的解决方案,我很高兴听到。 谢谢你的回答。
答案 0 :(得分:0)
尝试替换
$invite->update([
'status' => 'creating_test_instance'
]);
使用:
$invite->status = 'creating_test_instance';
$invite->save();
看看它是否有任何区别