Пользовательское правило проверки Laravel

Как сделать, чтобы эта функция искала строку в таблице не по имени Джон но по вменяемым ‘название’ ?

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');

}), ],
]);
}

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

Другие решения

Вы должны использовать 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);),
]);
}
0

По вопросам рекламы [email protected]