我有一個在我的 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
方法來防止此類問題,那就更好了。
P粉7757237222024-03-28 09:30:41
您可以使用->firstOrCreate([],[])
方法而不是create,它會先檢查資料庫中第一個參數中給出的所有欄位的記錄,然後然後,如果它沒有找到它,它將與第二個參數中的數據一起創建一個。
給你的例子:
$registrant->enrollmentLogs()->firstOrCreate($validated, []);