1
votes

Vérifiez les valeurs en double sur le tableau dans Laravel5.7

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


0 commentaires

3 Réponses :


1
votes

Veuillez essayer d'utiliser comme ceci:

$rules = array(
            "name" => "required",
            "email" => "required|email|unique:users",
             "password" => "required|min:6",

        );


0 commentaires


0
votes

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


0 commentaires