Laravel自定义验证有很多参数

时间:2017-02-08 16:54:47

标签: php laravel

我必须遵循自定义验证

Validator::extend('uniqueFirstAndLastName', function ($attribute, $value, $parameters, $validator) {
        $count = DB::table('people')->where('firstName', $value)
            ->where('lastName', $parameters[0])
            ->where('id', '<>', $parameters[1])
            ->count();

        return $count === 0;
    });

如何使用第二个参数调用此规则,因为$ parameters需要一个数组?

这不起作用:

return Validator::make($data, [
            'firstName' => "uniqueFirstAndLastName:{$data['lastName]},{$data['id']}"
]

2 个答案:

答案 0 :(得分:1)

正如Mjh所说,在数据库中添加约束始终是一种惯例。

然而,您可以尝试这种方法,

Validator::make($data, [
    'lastName' => [
        'required',
        "unique:people,lastName,{$ignoredUserId},firstName,{$data['lastName']}'"
    ],
]);

参考:https://laravel.com/docs/5.3/validation#rule-unique

答案 1 :(得分:0)

在custome validator函数中尝试var_dump后,我能够看到其参数的内容。

这个问题的答案就是用逗号分隔值,如下所示:

return Validator::make($data, [
            'firstName' => "uniqueFirstAndLastName:{$data['lastName]},{$data['id']}"
]);