Problème
J'ai un modèle d'utilisateur Laravel Whre j'ai ajouté une règle de validation unique sur le nom d'utilisateur et l'e-mail. Maintenant, quand je met à jour mon utilisateur via mon dépôt et que je souhaite re-valider mon modèle, j'obtiens une erreur. C'est à quoi ressemble ma méthode de mise à jour
Mise à jour de la fonction publique ($ id, $ data)Cela échoue dans les tests avec
ValidationException: "Nom d'utilisateur": ["Le nom d'utilisateur a déjà été pris."],Y a-t-il un moyen de réparer ceci élégamment?
Solution
C'est une erreur courante à Laravel chaque fois que vous mettez à jour quoi que ce soit. Il nécessitera par défaut l'ID comme clé pour correspondre à l'entrée existante. Donc, ce que vous devez faire est d'ajouter l'ID de l'instance actuellement mise à jour au validateur.
Passez l'ID de votre instance pour ignorer le validateur unique.
Dans le validateur, utilisez un paramètre pour détecter si vous mettez à jour ou créez la ressource.
En cas de mise à jour, forcez la règle unique à ignorer un ID donné: