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 :
<code class="php">$user = $this->findById($id); $user->fill($data); $this->validate($user->toArray(), ['id' => $user->id]);</code>
<code class="php">// Validation rules 'username' => Validator::make($data, [ 'username' => 'required|unique:users,username,' . ($id ?? null), ]);</code>
<code class="php">'username' => 'required|unique:users,username,' . ($id ?? null),</code>
<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!