Heim > Fragen und Antworten > Hauptteil
Ich habe eine Methode zum Senden von Benachrichtigungen auf meinem NoticeController
.
Das Problem besteht darin, dass nicht erkannt werden kann, ob der API-Endpunkt mehrmals aufgerufen wird (z. B. doppelte Formularübermittlung vom Client) oder ob eine Benachrichtigung an den Studenten gesendet wird. Es führt zu doppelten Datensätzen in der Datenbank, wenn ich sie nur einmal einfügen muss.
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!']); }
Es wäre besser, wenn ich alle store
和 update
Methoden auf dem Controller schützen könnte, um solche Probleme zu verhindern.
P粉7757237222024-03-28 09:30:41
您可以使用 ->firstOrCreate([],[])
方法而不是 create,它会首先检查数据库中第一个参数中给出的所有字段的记录,然后然后,如果它没有找到它,它将与第二个参数中的数据一起创建一个。
给你的例子:
$registrant->enrollmentLogs()->firstOrCreate($validated, []);