在Laravel5.7中验证阵列上的重复值 [英] Verify duplicate values on the array in Laravel5.7

查看:99
本文介绍了在Laravel5.7中验证阵列上的重复值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想验证数据库中的电子邮件地址是否重复? 这是我的代码:

I want to verify if email address in my database is duplicate or not? Here is my codes :

'users.*.email'=> ['required','unique:users','email']

这是我的控制器

UsersController

public function MassStore(MassStoreUserRequest $request)
{

    $inputs = $request->get('users');
    return redirect()->route('admin.users.index');
}

这是我的POST数据(post data($ inputs)将如下发送):

and this is my POST data (post data($inputs) will send like as below) :

'users' => [
    [
        'name' => 'Ken Tse',
        'email' => 'ken@gamil.com',
        'password' => 'ken12ken34ken',
    ],
    [
        'name' => 'Ken Tse',
        'email' => 'ken@gamil.com',   //duplicate, so need trigger error
        'password' => 'ken12ken34ken',
    ],
]

这是我得到的错误:

[2019-12-10 15:51:16] local.DEBUG:PDOException:SQLSTATE [23000]:违反完整性约束:1062键'users_email_unique'的重复条目'ken@gamil.com'

[2019-12-10 15:51:16] local.DEBUG: PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'ken@gamil.com' for key 'users_email_unique'

MassStoreUserRequest

MassStoreUserRequest

public function rules()
{
    return [
        'users'                => ['required','array'],
        'users.*.name'         => ['required'],
        'users.*.email'        => ['required','unique:users','email'],
        'users.*.password'     => ['required','min:8']
    ];
}

推荐答案

只需在电子邮件关键字(例如:

Just use the distinct with your email keyword such as :

public function rules()
{
    return [
        'users'                => ['required','array'],
        'users.*.name'         => ['required'],
        'users.*.email'        => ['required','unique:users','email', 'distinct'],
        'users.*.password'     => ['required','min:8']
    ];
}

这篇关于在Laravel5.7中验证阵列上的重复值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆