Laravel - 根据请求规则中的条件验证所需

时间:2021-02-16 03:37:43

标签: laravel

我的 Laravel-5.8 代码中有这个请求规则:

public function rules()
{
    return [
        'activate_msf' => [
            'nullable',
                Rule::unique('appraisal_parameters')->where(function ($query) {
                return $query->where('company_id', $this->company_id)
                        ->where('activate_msf', $this->activate_msf);
                })
        ],        
        'max_internal_respondent' => [
            'nullable',
            'numeric',
            'min:1',
            'max:30',
            'gt:min_internal_respondent',
        ],             
        'min_internal_respondent' => [
            'nullable',
            'numeric',
            'min:1',
            'max:30',
        ],   
    ];
}

activate_msf 是 tinyint(1),它可以是 0 或 1。

如何仅在 activate_msf = 1 时验证 min_internal_respondent 和 max_internal_respondent 是必需的?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用 required_if 规则来实现该验证:

 public
    function rules()
    {
        $rules= [
            'activate_msf' => [
                'nullable',
                Rule::unique('appraisal_parameters')->where(function ($query) {
                    return $query->where('company_id', $this->company_id)
                        ->where('activate_msf', $this->activate_msf);
                })
            ],
            'max_internal_respondent' => [
                'required_if:activate_msf,1',
                'numeric',
                'min:1',
                'max:30',
                'gt:min_internal_respondent',
            ],
            'min_internal_respondent' => [
                'required_if:activate_msf,1',
                'numeric',
                'min:1',
                'max:30',
            ],
        ];
    }