我的 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 是必需的?
谢谢
答案 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',
],
];
}