L'API Laravel empêche plusieurs insertions/mises à jour
P粉864594965
P粉864594965 2024-03-27 11:51:51
0
1
460

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粉864594965
P粉864594965

répondre à tous(1)
P粉775723722

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, []);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!