Rumah  >  Soal Jawab  >  teks badan

API Laravel menghalang berbilang sisipan/kemas kini

Saya mempunyai kaedah untuk menghantar pemberitahuan pada NoticeController saya.

Masalahnya ialah ia tidak dapat mengesan jika titik akhir API dipanggil beberapa kali (cth. penyerahan borang dua kali daripada pelanggan) atau jika pemberitahuan dihantar kepada pelajar. Ia menghasilkan rekod pendua pada pangkalan data apabila saya hanya perlu memasukkan sekali.

 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!']);
    }

Adalah lebih baik jika saya dapat melindungi semua storeupdate ​​kaedah pada pengawal untuk mengelakkan isu sedemikian.

P粉864594965P粉864594965229 hari yang lalu465

membalas semua(1)saya akan balas

  • P粉775723722

    P粉7757237222024-03-28 09:30:41

    Anda boleh menggunakan kaedah ->firstOrCreate([],[]) dan bukannya mencipta, ia akan menyemak pangkalan data terlebih dahulu untuk rekod dengan semua medan yang diberikan dalam parameter pertama dan kemudian jika ia tidak menemuinya ia akan menciptanya dengan data dalam parameter kedua satu .

    Contoh untuk anda:

    $registrant->enrollmentLogs()->firstOrCreate($validated, []);

    balas
    0
  • Batalbalas