Laravel(5.3.24+)验证:验证2列

时间:2017-03-12 23:54:21

标签: validation laravel-5.3

使用这里看到的新式laravel验证:https://laravel-news.com/unique-and-exists-validation

我希望名称列是必需的&只适用于比赛。

使用下面的示例表, 身份3:验证应该阻止这种情况发生,因为"该竞赛的名称已经存在"。

enter image description here

1 个答案:

答案 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。