我无法让Validator使用我想要设置的规则。我本可以创建多个表,但撤消所有内容将会有很多工作,所以如果可能的话,我更愿意让它工作。
$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语句中而不是&&amp ;.在两个规则之间使用管道失败并生成偏移错误,但这可能不正确。
'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'
最终使原始查询无变量地工作后,最终使用全局变量传递给查询,因为本地不起作用。
答案 0 :(得分:1)
对于独一无二的,你可以这样做 -
$rules = [
'segment_name' => 'required|unique', // you can unique validate like this also 'unique:tablename', for specific table
];
//Validate inputs
$input = Input::only('segment_name');
$validator = Validator::make($input, $rules);
希望这对你有所帮助。