1

我有一个验证规则,如下所示。我使用存在来确保合同是唯一的。现在的问题是合同编号与数据库中的空格一起存储,因此此验证不适用于这些情况(例如,它会说合同编号不存在,这是由于编号前的空格)。为了解决这个问题,我想做 trim(contract_number)。请问如何将修剪功能应用于下面的contract_number

public function rules()
{
    return [   
        'tel' => 'required|max:25',
        'contract' => 'required|digits:9|exists:accounts,contract_number',
        'nom' => 'required|max:255',
        'language' => 'required|max:2',
        'g-recaptcha-response' => 'required|captcha',
    ];
}
4

1 回答 1

1

Laravel 文档中,您可以使用自定义表单请求上的withValidator方法在. 从列表中删除规则,并尝试使用钩子自定义规则。requestexists:accounts,trim(contract_number)after

/**
* Configure the validator instance.
 *
 * @param  \Illuminate\Validation\Validator  $validator
 * @return void
 */
public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if (!\DB::table('accounts')->whereRaw('TRIM(contract_number) = ?', [request('contract_number')])->exists()) {
            $validator->errors()->add('contract_number', 'Contract number does not exists');
        }
    });
}
于 2020-07-21T10:10:43.713 回答