Je veux vérifier si l'adresse e-mail de ma base de données est en double ou non? Voici mes codes:
public function rules() { return [ 'users' => ['required','array'], 'users.*.name' => ['required'], 'users.*.email' => ['required','unique:users','email'], 'users.*.password' => ['required','min:8'] ]; }
et voici mon Controller
'users' => [ [ 'name' => 'Ken Tse', 'email' => 'ken@gamil.com', 'password' => 'ken12ken34ken', ], [ 'name' => 'Ken Tse', 'email' => 'ken@gamil.com', //duplicate, so need trigger error 'password' => 'ken12ken34ken', ], ]
et voici mes données POST (les données de publication ($ inputs) seront envoyées comme ci-dessous):
public function MassStore(MassStoreUserRequest $request) { $inputs = $request->get('users'); return redirect()->route('admin.users.index'); }
et voici l'erreur que j'obtiens:
[2019-12-10 15:51:16] local.DEBUG: PDOException: SQLSTATE [23000]: Violation de contrainte d'intégrité: 1062 Entrée en double '
ken@gamil.com
' for key 'users_email_unique
'
MassStoreUserRequest
'users.*.email'=> ['required','unique:users','email']
3 Réponses :
Veuillez essayer d'utiliser comme ceci:
$rules = array( "name" => "required", "email" => "required|email|unique:users", "password" => "required|min:6", );
Pour éviter la soumission de données en double dans un tableau, vous pouvez utiliser le distinct a > règle: return [
'users' => ['required', 'array'],
'users.*.name' => ['required'],
'users.*.email' => ['required', 'email', 'distinct', 'unique:users'],
'users.*.password' => ['required', 'min:8'],
];
Utilisez simplement le mot-clé distinct avec votre adresse e-mail, tel que:
public function rules() { return [ 'users' => ['required','array'], 'users.*.name' => ['required'], 'users.*.email' => ['required','unique:users','email', 'distinct'], 'users.*.password' => ['required','min:8'] ]; }