Laravel - 如何使用规则请求根据条件进行验证

用户11352561

在我的 Laravel-8 应用程序中,表中的 company_id 默认为 0:

我有这个请求规则验证:

    'email' => [
        'required',
        'email',
        'min:5',
        'max:80',
        Rule::unique('users', 'email')
    ],
     'company_id' => [
        'nullable',
    ], 

我希望电子邮件基于两个条件是唯一的:

  1. 如果未选择 company_id,则电子邮件应该是唯一的。

  2. 如果选择 company_id,则电子邮件应与 company_id 唯一。

我如何实现这一目标?

谢谢

约翰·洛博

您可以使用自定义规则

'email' => ['required',
    'email',
    'min:5',
    'max:80',
        function ($attribute, $value, $fail)use($request) {
            $company=Company::where('email',$value)->where(function ($query)use($request){
                if(!empty($request->company_id)){
                    $query->where('company_id',$request->company_id);
                }
                
            })->exists();
            
            if($company){
                $fail('The '.$attribute.' is invalid.');
            }
        
        },
    ],

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章