Laravel验证自定义规则

时间:2017-09-09 07:30:13

标签: php sql laravel validation rule

如何做到这一点,这个函数会在表格中寻找一行而不是给定名称 John ,而是通过输入 'name'

public function validation($request)
{
    return $this->validate($request, [
        'name' => 'required|max:255',
        'last_name' => 'required|max:255',
        'code' =>  ['required',Rule::exists('users')->where(function ($query) {
            $query->where('name', '=', 'John');

        }), ],
    ]);
} 

2 个答案:

答案 0 :(得分:1)

检查你的参数并改变约翰'要求 - >名称



public function validation(Request $request){
  return $this->validate($request, [
          'name'      => 'required|max:255',
          'last_name' => 'required|max:255',
          'code'      => [
                          'required',
                          Rule::exists('users')
                              ->where('name', $request->name)
                        ],
        ]);
}




答案 1 :(得分:0)

您必须使用use关键字并将$request对象传递到此内容

public function validation($request)
{
    return $this->validate($request, [
        'name' => 'required|max:255',
        'last_name' => 'required|max:255',
        'code' =>  ['required',Rule::exists('users')->where(function ($query) use ($request) {
            $query->where('name', '=', $request->name);

        }), ],
    ]);
} 

或者,您可以使用这样的方法,而不会在where中传递回调函数

public function validation($request)
{
    return $this->validate($request, [
        'name' => 'required|max:255',
        'last_name' => 'required|max:255',
        'code' =>  array('required',Rule::exists('users')->where('name', '=', $request->name);),
    ]);
}