Laravel 数组字段总和验证
Laravel array sum of fields validation
我是 Laravel 的新手,我正在使用 Laravel 的验证器来验证一个不是在 Laravel 中构建的项目。
我需要知道是否有一个简单的内置 Laravel 验证器来验证数组中所有对象中某个字段的总和。
我的输入类似于:
{
"customer":95,
"name": "My object",
"values":
[
{
"name": "AAA",
"percentage": 50
},
{
"name": "BBB",
"percentage": 50
}
]
}
我需要确保我的百分比之和是100,有没有简单的方法?
我认为您最好创建一个 custom validation rule. In the validation, I'd convert the values array to a collection and use the collection sum method。例如:
public function passes($attribute, $value)
{
$values = collect($value);
return $values->sum('percentage') <= 100;
}
使用 Custom Validation Rules 进行单一属性验证。
使用 After Validation Hook 进行其他或更复杂的验证,比如多个字段的总和。
public function withValidator($validator)
{
$validator->after(function ($validator) {
if ($this->get('field1') + $this->get('field2') + $this->get('field3') != 100) {
$validator->errors()->add(null, 'The sum of field1, field2 and field3 must be 100');
}
});
}
我是 Laravel 的新手,我正在使用 Laravel 的验证器来验证一个不是在 Laravel 中构建的项目。
我需要知道是否有一个简单的内置 Laravel 验证器来验证数组中所有对象中某个字段的总和。
我的输入类似于:
{
"customer":95,
"name": "My object",
"values":
[
{
"name": "AAA",
"percentage": 50
},
{
"name": "BBB",
"percentage": 50
}
]
}
我需要确保我的百分比之和是100,有没有简单的方法?
我认为您最好创建一个 custom validation rule. In the validation, I'd convert the values array to a collection and use the collection sum method。例如:
public function passes($attribute, $value)
{
$values = collect($value);
return $values->sum('percentage') <= 100;
}
使用 Custom Validation Rules 进行单一属性验证。
使用 After Validation Hook 进行其他或更复杂的验证,比如多个字段的总和。
public function withValidator($validator)
{
$validator->after(function ($validator) {
if ($this->get('field1') + $this->get('field2') + $this->get('field3') != 100) {
$validator->errors()->add(null, 'The sum of field1, field2 and field3 must be 100');
}
});
}