使用这里看到的新式laravel验证:https://laravel-news.com/unique-and-exists-validation
我希望名称列是必需的&只适用于比赛。
使用下面的示例表, 身份3:验证应该阻止这种情况发生,因为"该竞赛的名称已经存在"。
答案 0 :(得分:0)
最好的解决方案是为此创建custom rule,接受带有相应的competition_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。有了这些信息,您现在可以检查输入的ID是否已经有类似的ame。