Laravel 字段的验证数量数组不起作用
Laravel Validation amount array of fields not work
我创建了如下规则验证:
$rules = [
'items.*.qty' => ['required', 'integer', 'min:1'],
'items.*.ordered_qty' => ['required','numeric','min:1']
]
$this->validate($request, $rules);
这里我需要验证每个 ordered_qty
应该大于 qty
我已经尝试了下面的方法但是它对我不起作用
$rules = [
'items.*.qty' => ['required', 'integer', 'min:1','max:items.*.ordered_qty'],
'items.*.ordered_qty' => ['required','numeric','min:1']
]
$this->validate($request, $rules);
我也尝试了自定义验证,但我无法获得其他字段的值
$rules = [
'items.*.qty' => ['required', 'integer', 'min:1',function ($attribute, $value, $fail) {
if ($value > ordered_qty) {
$fail(':attribute qty is invalid!');
}
}],
'items.*.ordered_qty' => ['required','numeric','min:1']
]
验证错误。我怎样才能对对象数组的属性进行比较
您正在使用最大数量,但当您尝试使用另一个字段的输入验证最大数量时,最大数量怀疑是一个值。我认为您需要使用 lte,请参阅:https://laravel.com/docs/5.8/validation#rule-lte
我创建了如下规则验证:
$rules = [
'items.*.qty' => ['required', 'integer', 'min:1'],
'items.*.ordered_qty' => ['required','numeric','min:1']
]
$this->validate($request, $rules);
这里我需要验证每个 ordered_qty
应该大于 qty
我已经尝试了下面的方法但是它对我不起作用
$rules = [
'items.*.qty' => ['required', 'integer', 'min:1','max:items.*.ordered_qty'],
'items.*.ordered_qty' => ['required','numeric','min:1']
]
$this->validate($request, $rules);
我也尝试了自定义验证,但我无法获得其他字段的值
$rules = [
'items.*.qty' => ['required', 'integer', 'min:1',function ($attribute, $value, $fail) {
if ($value > ordered_qty) {
$fail(':attribute qty is invalid!');
}
}],
'items.*.ordered_qty' => ['required','numeric','min:1']
]
验证错误。我怎样才能对对象数组的属性进行比较
您正在使用最大数量,但当您尝试使用另一个字段的输入验证最大数量时,最大数量怀疑是一个值。我认为您需要使用 lte,请参阅:https://laravel.com/docs/5.8/validation#rule-lte