我有一个在我的NoticeController
上发送通知的方法。
问题是它无法检测 API 端点是否被多次调用(例如从客户端提交双重表单)或者通知是否已发送给学生。当我只需要插入一次时,它会导致数据库上出现重复记录。
public function sendStudentNotice(Request $request, Registrant $registrant){ $validated = $request->validate([ 'type' => 'required|in:success,error,warning,info', 'message' => 'required|string' ]); //This is inserting new record each call $registrant->enrollmentLogs()->create($validated); return response()->json(['message' => 'A notice has been sent successfully!']); }
如果我可以保护控制器上的所有store
和update
方法来防止此类问题,那就更好了。
您可以使用
->firstOrCreate([],[])
方法而不是 create,它会首先检查数据库中第一个参数中给出的所有字段的记录,然后然后,如果它没有找到它,它将与第二个参数中的数据一起创建一个。给你的例子: