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']
];
}