3 votes

Comment empêcher l'insertion d'un email s'il existe déjà avec un id spécifique dans laravel ?

J'ai une table dans laquelle j'essaie de stocker des adresses e-mail. Ces adresses e-mail seront enregistrées avec user_id .

Par exemple dans email_list tableau

|ID | user_id | email          |
...............................
| 1 | 101     | john@gmail.com |
...............................
| 2 | 102     | john@gmail.com |

Dans le tableau ci-dessus, vous pouvez voir que les mêmes adresses e-mail sont enregistrées avec des adresses différentes. user_id c'est ce que j'essaie de faire.

Actuellement, j'essaie une validation simple de Laravel comme ceci.

'email' => 'required|unique:email_list|email',

Existe-t-il un moyen de vérifier les adresses e-mail déjà existantes si une rangée a la même adresse ? user_id ? J'utilise laravel 5.2. J'apprécierais que quelqu'un me guide. Merci pour votre aide.

Modifié après 3 heures

J'ai également ajouté la même question dans le github en tant que numéro . Une personne m'a dit que je devais créer ma propre règle de validation.

1voto

Ben Swinburne Points 6771

Forcer une règle unique à ignorer un ID donné

Vous pouvez spécifier un ID à ignorer comme troisième paramètre facultatif. De plus, si votre table utilise un nom de colonne de clé primaire autre que id, vous pouvez le spécifier comme quatrième paramètre facultatif

'email' => "unique:{$table},{$field},{$user->id},{$idField}"

Donc, dans votre cas, ce serait comme suit

'email' => "unique:email_list,email,{$user->id},user_id'

0voto

Rama Durai Points 614

C'est contre la règle de l'existence.
Tout d'abord, la règle d'existence vérifie la condition selon laquelle les champs sont disponibles ou non.
Je pense que si nous l'avons utilisé comme opposé, alors il est utile pour vous.

Ex:-

     'email' => 'exists:email_list,email,user_id,!102'

c'est-à-dire,

     'email' => 'exists:email_list,email,user_id,!'. $user_id        

autrement,

     'email' => 'exists:email_list,email,user_id,!'. Input::get(user_id)

lors de l'utilisation de Input & import le

    use Illuminate\Support\Facades\Input;        

et changer le contenu du message
Essayez-les et répondez à ce qui s'est passé ou est-ce que ça marche pour vous ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X