【问题标题】:Laravel validation : Check Exist in two tablesLaravel 验证:检查存在于两个表中
【发布时间】:2018-12-03 14:21:56
【问题描述】:

我有以下验证,我试图在两个表中检查电子邮件:

$validator = Validator::make($request->all(),
[
    'email' => "exists:users,email|exists:user_company,company_email"
]);

但它只适用于一个表,那就是用户表。

周围有吗?

【问题讨论】:

    标签: php laravel validation backend


    【解决方案1】:

    可以在 laravel 中添加自定义验证规则。阅读这里Laravel Custom Rules

    例如:

    $validator = Validator::make($request->all(), [
                'email' => ["exists:users,email", function($attribute, $value, $fail) {
                        /* Custom Validation code */
                    },],
            ]);
    

    【讨论】:

    • 您应该制作 Rule 类并像在文档中一样使用它们。您可以创建 2 条自己的规则并同时使用它们,这样您就可以在需要时打印出 2 条不同的错误消息。
    【解决方案2】:

    试试这个方法:

    public function validator(array $data)
    {
        $data = ['email2' => $data['email']];
    
        $rules = [   
            'email' => 'required|email|max:255|unique:users',
            'email2' => 'exists:user_company,company_email',
        ];
    
        $messages = [
            'email.unique' => 'This email is already exists in users table',
            'email2.exists' => 'This email is already exists in user_company table',
        ];
    
        return $validator = Validator::make($data, $rules, $messages);
    }
    
    $this->validator($request->all());
    

    【讨论】:

    • 不要这样做,这是一个可怕的解决方案。选择其他答案
    猜你喜欢
    • 2017-10-30
    • 2023-02-02
    • 1970-01-01
    • 2020-03-03
    • 2015-01-02
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多