Я пытаюсь добавить ограничения проверки при регистрации нового пользователя и хочу, чтобы комбинация двух полей была уникальной в базе данных.Ошибка, которую я получаю из базы данных, говорит, что у меня нарушение целостности.моя таблица называется users, а поля, которые я хочу иметь уникальную комбинацию, называются ssn и lastfour.
Я добавил строку $ table-> unique (array ('ssn', 'lastfour'));в миграции пользователя, и я также добавил некоторые поля в регистрации, которые работают нормально, и база данных в порядке.Я попробовал решение в похожем вопросе, опубликованном около 9 месяцев назад Уникальная проверка Laravel по нескольким столбцам , но я получил неопределенную переменную в строке "Правило :: уникальные ('серверы)" -> где (функция ($ query)) use ($ ssn, $ lastfour) "
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'lastname' => ['required', 'string', 'max:255'],
'username' => ['required', 'string', 'max:255', 'unique:users'],
'ssn' => ['required', 'string', 'regex:/^[0-9]*$/','max:8', 'min:8'],
'lastfour' => ['required', 'string', 'regex:/^[0-9]*$/','max:4', 'min:4'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
]);
}
я попробовал следующий код
'lastfour' => ['required', 'string', 'regex:/^[0-9]*$/','max:4', 'min:4',
Rule::unique('users')->where(function ($query) use
($ssn, $lastfour){
return $query->where('ssn', $ssn)
->where('lastfour', $lastfour);
})
],