【问题标题】:How to validate combined uniqueness of two fields in Laravel 5.6?如何验证 Laravel 5.6 中两个字段的组合唯一性?
【发布时间】:2019-01-04 13:36:54
【问题描述】:

这是我的验证规则:-

$validationCondition    = array(
                            'fname'     => 'required|min:2',
                            'lname'     => 'required|min:2',
                            'email'     => 'required|email|unique:users,email',
                            'isd'       => 'required|unique:users,isd',
                            'mobile'    => 'required',
                            'password'  => 'required'
                        );
$validationMessages     = array(
                            'fname.required'    => 'Please provide first name',
                            'fname.min'         => 'First name should be atleast 3 characters long',

                            'lname.required'    => 'Please provide last name',
                            'lname.min'         => 'Last name should be atleast 3 characters long',

                            'email.required'    => 'Please provide email',
                            'email.email'       => 'Please provide a valid email id',
                            'email.unique'      => 'This email id has already been registered. Choose any other valid email id.',

                            'isd.required'      => 'The city name should be atleast 3 characters long',

                            'mobile.required'   => 'Please provide mobile number',

                            'password.required' => 'Please provide password'
                        );

在users表中,isdmobile都要检查,确保联系号码是否唯一。

我该如何检查?我知道如何检查单个字段的唯一性,但不知道如何检查组合值是否唯一。

【问题讨论】:

标签: laravel validation laravel-5.6 laravel-validation


【解决方案1】:
$validationCondition = array(
    ...
    'isd' => 'required',
    'mobile' => 'required|unique:users,mobile,NULL,id,isd,' . $request->isd,
    ...
);

mobileunique 规则的含义将是:“mobile 的值在所有现有用户中必须是唯一的,这些用户的 isd 与请求中的值相同”。

$request 这是您正在验证的传入请求的实例(显然)。

【讨论】:

  • 完美!那是一种魅力。 NULL 有什么作用?
  • NULL,id 部分负责unique 规则的ignore 参数。这些只是这些参数的默认值,因为我们没有使用它们,但需要获取唯一规则的 where 参数。如果您指定模型 id 而不是 NULLunique 规则将忽略具有此 id 的行(在更新现有行时很有用,因此他的当前值不包括在唯一性检查中)。你可以阅读更多关于它here
【解决方案2】:

你可以像下面这样使用

'mobile'  => 'required|unique:users,mobile,NULL,id,mobile,isd'

了解更多详情from doc

【讨论】:

    猜你喜欢
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2011-05-01
    • 2018-04-28
    • 2017-10-30
    • 2019-11-15
    相关资源
    最近更新 更多