J'ai une méthode pour envoyer des notifications sur mon NoticeController
.
Le problème est qu'il ne peut pas détecter si le point de terminaison de l'API est appelé plusieurs fois (par exemple, double soumission de formulaire par le client) ou si une notification est envoyée à l'étudiant. Cela entraîne des enregistrements en double dans la base de données alors que je n'ai besoin d'insérer qu'une seule fois.
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!']); }
Ce serait mieux si je pouvais protéger toutes les store
和 update
méthodes du contrôleur pour éviter de tels problèmes.
Vous pouvez utiliser la méthode
->firstOrCreate([],[])
au lieu de créer, elle vérifiera d'abord la base de données pour l'enregistrement avec tous les champs donnés dans le premier paramètre, puis si elle ne le trouve pas, elle la créera avec les données du deuxième paramètre.Exemple pour vous :