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。

我如何验证min_internal_答辩和max_internal_答辩只需要当activate_msf = 1?

感谢

您可以使用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',
],
];
}

最新更新