recherche

Maison  >  Questions et réponses  >  le corps du texte

L'API Laravel empêche plusieurs insertions/mises à jour

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 storeupdate méthodes du contrôleur pour éviter de tels problèmes.

P粉864594965P粉864594965231 Il y a quelques jours467

répondre à tous(1)je répondrai

  • P粉775723722

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

    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 :

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

    répondre
    0
  • Annulerrépondre