Rumah > Soal Jawab > teks badan
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 store
和 update
kaedah pada pengawal untuk mengelakkan isu sedemikian.
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, []);