首页 > 解决方案 > Laravel 数组字段总和验证

问题描述

我是 Laravel 的新手,我将 Laravel 的验证器用于不是在 Laravel 中构建的项目。

我需要知道是否有一个简单的内置 Laravel 验证器来验证数组中所有对象中某个字段的总和。

我的输入看起来像:

{
    "customer":95,
    "name": "My object",
    "values":
        [
        { 
            "name": "AAA",
            "percentage": 50
        },
        {
            "name": "BBB",
            "percentage": 50
        }
    ]

}

我需要确保我的百分比总和是 100。有没有简单的方法?

标签: laravellaravel-validation

解决方案


使用自定义验证规则进行单属性验证。

使用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');
        }
    });
}

推荐阅读