Comment valider unique e-mail de l'utilisateur qui est mise à jour dans Laravel?
Je suis à l'aide de Laravel 5.2 et souhaitez mettre à jour le compte de l'utilisateur à l'aide du validateur.
Je veux garder le champ adresse e-mail unique, mais, si l'utilisateur le type de son e-mail actuelle, il se cassera. Comment puis-je mettre à jour si l'email est unique, à l'exception de l'utilisateur e-mail actuelle?
- Seulement de valider le champ e-mail si c'est différent? Quelque chose comme...
if ($user->email != $request->email)
. Clairement il devrait y avoir quelques différences dans les contrôles entre l'ajout d'un utilisateur et la mise à jour d'un utilisateur. - Non, je veux valider s'il est unique. Mais je veux permettre à l'utilisateur de mettre à jour son e-mail à son e-mail ACTUELLE, sans manquer à la validation unique.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez dire que pour les validateurs:
Vérifier la docs, dans la section 'Obligeant à Une Règle Unique Pour Ignorer Un ID'.
'email' => 'required|string|email|max:255|unique:users,email,'.$user->id,
À la Demande de la Classe, vous en aurez probablement besoin de cette validation en METTRE ou PATCH méthode où vous n'avez pas l'utilisateur, alors vous pouvez simplement utiliser cette règle
1:
OU
2:
$this->id
est de fournir l'id de l'utilisateur car $cette est l'objet de la Demande de Classe et Demande contient également de l'objet utilisateur.
Espère que ça va résoudre le problème tout en utilisant la demande de la classe.
Pour des codeurs à l'aide de
FormRequest
& Laravel 5.7 et de faire face à ce problème, vous pouvez faire quelque chose comme ceciLa
$this->user
sera de retour l'ID de l'utilisateur en provenance de la demande.Sur Laravel de 5,7 pour charger le programme de validation d'ignorer l'identité de l'utilisateur, nous allons utiliser la Règle de classe couramment définir la règle. Dans cet exemple, nous allons également spécifier les règles de validation comme un tableau au lieu d'utiliser le caractère | pour délimiter les règles:
$user
variable est une représentation de l'email de l'utilisateur que vous voulez ignorer, il peut être leauth()->user()
ou unrequest('user_id')
en fonction de votre projet.