【发布时间】:2018-02-12 09:14:03
【问题描述】:
我无法让验证器使用我想要设置的规则。我本可以制作多个表格,但要撤消所有内容需要做很多工作,所以如果可能的话,我更愿意让它工作。
$validator = Validator::make($input, [
'segment_name' => [
'required',
Rule::unique('groups')->where(function ($query) {
$query->where('lang', $list_name)->where('group_type', 'auto_segment');
}),
],
]);
我认为查询是这样做的方法,但我现在意识到这会增加另一个约束。我想要的是在满足 2 个查询条件时验证失败,否则它应该通过。有什么简单的方法吗?
在花了更多时间在这方面,我做了更多尝试,但还没有奏效。使用 2 条规则,验证器在我希望它通过时失败,类似于使用 ||在 if 语句而不是 && 中。在两个规则之间使用管道失败并产生偏移错误,但这可能不正确。
'segment_name' => 'unique:groups,segment_name,NULL,id,lang,' . $list_name,
'segment_name' => 'unique:groups,segment_name,NULL,id,group_type,auto_segment'
'segment_name' => 'unique:groups,segment_name,NULL,id,lang,' . $list_name . '|unique:groups,segment_name,NULL,id,group_type,auto_segment'
在最终让原始查询在没有变量的情况下工作后,最终使用全局变量传递给查询,因为局部变量不起作用。
【问题讨论】:
-
创建一个自定义验证,并通过验证(如管道分隔的要求)传递它。您将获得段的值,并且可以根据您的喜好进行操作以给出真假。
-
我正在查看自定义验证和复杂条件验证laravel.com/docs/5.4/validation#rule-unique,我觉得我几乎已经掌握了,但还没有完全掌握。谢谢,我再试试看。
-
原来是原始代码,按照我的意愿去做,但输入有问题。感谢 cmets 和答案。
标签: php laravel validation laravel-5