Comment mettre à jour un modèle Laravel avec des règles de validation uniques sans erreurs ?

Patricia Arquette
Libérer: 2024-10-24 19:18:30
original
559 Les gens l'ont consulté

How to Update a Laravel Model with Unique Validation Rules Without Errors?

Laravel : mise à jour d'un modèle avec des règles de validation uniques

Dans Laravel, la validation des champs lors des mises à jour du modèle est cruciale pour garantir l'intégrité des données. Cependant, des règles de validation uniques peuvent entraîner des problèmes lors de la mise à jour des enregistrements existants.

Considérez le code suivant dans une classe Repository :

<code class="php">public function update($id, $data) {
    $user = $this->findById($id);
    $user->fill($data);
    $this->validate($user->toArray());
    $user->save();

    return $user;
}</code>
Copier après la connexion

Ce code tente de revalider les champs du modèle, y compris les champs uniques comme "nom d'utilisateur" et "e-mail". Cependant, cette approche peut entraîner des erreurs de validation lors de la tentative de mise à jour d'enregistrements avec des valeurs uniques existantes.

Pour résoudre ce problème, nous devons exclure l'enregistrement actuel de la validation pour permettre les mises à jour sans violer les contraintes uniques. Nous pouvons y parvenir en ajoutant l'identifiant de l'instance en cours de mise à jour au validateur. Voici comment :

  1. Transmettre l'identifiant de l'instance :
    Transmettre l'identifiant de l'instance en cours de mise à jour à la méthode de mise à jour :

    <code class="php">public function update($id, $data) {
        $user = $this->findById($id);
        $user->fill($data);
        $this->validate($user->toArray(), ['id' => $id]);
        $user->save();
    }</code>
    Copier après la connexion
  2. Exclure l'enregistrement actuel de la validation :
    Dans le validateur, nous utilisons le paramètre id pour détecter si nous mettons à jour ou créons la ressource :

    • Mise à jour : Pour des règles de validation uniques, ajoutez ,{$id} à la règle pour exclure l'enregistrement actuel. Par exemple :

      <code class="php">'email' => 'unique:users,email,{$id}',</code>
      Copier après la connexion
    • Création : Pour les règles de validation uniques, n'incluez pas l'identifiant. Par exemple :

      <code class="php">'email' => 'unique:users,email',</code>
      Copier après la connexion

En suivant ces étapes, nous pouvons mettre à jour avec élégance les modèles Laravel tout en garantissant que les contraintes de validation uniques sont respectées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
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!