Comment revalider les modèles Laravel avec des contraintes uniques lors des mises à jour ?

Barbara Streisand
Libérer: 2024-10-24 17:49:02
original
917 Les gens l'ont consulté

How to Revalidate Laravel Models with Unique Constraints During Updates?

Revalider le modèle Laravel avec des contraintes uniques lors de la mise à jour

Lorsque vous travaillez avec des modèles Laravel Eloquent qui appliquent des règles de validation uniques, la mise à jour du modèle peut déclencher la validation erreurs si les valeurs modifiées correspondent aux enregistrements existants. Pour résoudre ce problème, les développeurs revalident souvent les attributs du modèle lors de la mise à jour. Cependant, cette approche peut entraîner des problèmes avec la validation des règles requises.

Dans l'exemple fourni, la méthode update dans le référentiel valide les attributs du modèle à l'aide de la méthode validate. Cependant, cette validation applique les mêmes règles uniques que pour la création d'un nouveau modèle. Par conséquent, la mise à jour du modèle avec les valeurs existantes échoue la validation.

Pour résoudre ce problème, vous pouvez personnaliser les règles de validation pour ignorer l'identifiant de l'instance en cours de mise à jour.

Personnalisation des règles de validation :

  1. Transmettez l'identifiant de l'instance de modèle au validateur :
<code class="php">$user = $this->findById($id);
$user->fill($data);
$this->validate($user->toArray(), ['id' => $user->id]);</code>
Copier après la connexion
  1. Dans le validateur, utilisez un paramètre pour faire la différence entre les mises à jour et les créations :
<code class="php">// Validation rules
'username' => Validator::make($data, [
    'username' => 'required|unique:users,username,' . ($id ?? null),
]);</code>
Copier après la connexion
  1. Pour les mises à jour, forcez la règle unique à ignorer l'identifiant spécifié :
<code class="php">'username' => 'required|unique:users,username,' . ($id ?? null),</code>
Copier après la connexion
  1. Pour créations, utilisez la règle unique standard :
<code class="php">'username' => 'required|unique:users,username',</code>
Copier après la connexion

En incorporant cette personnalisation, le framework ignorera la contrainte unique pour l'identifiant existant, vous permettant de mettre à jour le modèle sans déclencher d'erreurs de validation dues à des doublons valeurs des champs.

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!