Maison >développement back-end >tutoriel php >Comment revalider les modèles Laravel avec des contraintes uniques lors des mises à jour ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-24 17:49:021019parcourir

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>
  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>
  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>
  1. Pour créations, utilisez la règle unique standard :
<code class="php">'username' => 'required|unique:users,username',</code>

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!

Déclaration:
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