我必须遵循自定义验证
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']}"
]
答案 0 :(得分:1)
正如Mjh所说,在数据库中添加约束始终是一种惯例。
然而,您可以尝试这种方法,
Validator::make($data, [
'lastName' => [
'required',
"unique:people,lastName,{$ignoredUserId},firstName,{$data['lastName']}'"
],
]);
答案 1 :(得分:0)
在custome validator函数中尝试var_dump后,我能够看到其参数的内容。
这个问题的答案就是用逗号分隔值,如下所示:
return Validator::make($data, [
'firstName' => "uniqueFirstAndLastName:{$data['lastName]},{$data['id']}"
]);