Laravel(5.3.24+) Проверка: проверка 2 столбцов
Используя новый стиль проверки Laravel можно увидеть здесь: https://laravel-news.com/unique-and-exists-validation
Я хотел бы, чтобы название колонки было обязательным и уникальным только для соревнований.
Используя приведенную ниже таблицу примеров, id 3: проверка должна предотвратить это, потому что "имя уже существует для этого соревнования".
1 ответ
Пользовательское правило
Лучшим решением было бы создать для этого собственное правило, которое принимает поле с соответствующим значением Compet_id в качестве параметра.
Что-то вроде
//Calling the custom rule like this
['name' => 'required|validateName:yourCompetitionIdFormFieldHere'];
Объявление пользовательской функции проверки в вашем поставщике услуг, как это
Validator::extend('validateName', function ($attribute, $value, $parameters, $validator) {
$competitionId = ($validator->data, $parameters[0]);
//Now check if the $value is already set for the specific competition_id by using normal database queries and comparison
return count(Team::where("comeptition_id", "=", $competitionId)->whereName($value)->get()) == 0
});
Что это
Пользовательское правило проверки получает данные поля, которое вы передаете с помощью функции (в приведенном выше коде это yourCompetitionIdFormFieldHere
), поэтому он знает, какую лигу / Competition_id выбрал пользователь. Получив эту информацию, вы теперь можете проверить, есть ли уже подобная ame для введенного идентификатора.