Laravel API 防止多次插入/更新
P粉864594965
P粉864594965 2024-03-27 11:51:51
0
1
486

我有一個在我的 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!']);
    }

如果我可以保護控制器上的所有 storeupdate 方法來防止此類問題,那就更好了。

P粉864594965
P粉864594965

全部回覆(1)
P粉775723722

您可以使用->firstOrCreate([],[]) 方法而不是create,它會先檢查資料庫中第一個參數中給出的所有欄位的記錄,然後然後,如果它沒有找到它,它將與第二個參數中的數據一起創建一個。

給你的例子:

$registrant->enrollmentLogs()->firstOrCreate($validated, []);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板