我有一个laravel验证请求表,如下所示:
public function rules()
{
$id = $this->input('wlId');
return [
'id' => ['sometimes ', 'integer'],
'domain_name' => ['required', 'string', 'unique:white_label,domain_name' . $id],
'disabled' => ['required', 'boolean']
];
}
在唯一检查期间,我将id设置为忽略我的条目,但如果id不是整数,而是字符串,那么我将从验证器获得sql错误。
如果id字段未通过验证,如何停止验证?
在使用unique
验证规则时,将忽略某个值。考虑以下片段;
use IlluminateValidationRule;
// ...
public function rules() {
$id = $this->input('wlId');
return [
'id' => ['sometimes ', 'integer'],
'domain_name' => [
'required',
'string',
Rule::unique('white_label', 'domain_name')->ignore($id)
],
'disabled' => ['required', 'boolean']
];
}
有关更多详细信息,请参阅此链接;https://laravel.com/docs/8.x/validation#rule-唯一
如文档中所述,您可以使用bail
规则
有时,您可能希望在第一次验证失败后停止对属性运行验证规则。为此,请将保释规则分配给属性
$request->validate([
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',
]);
在本例中,如果title属性上的唯一规则失败,则不会检查max规则。规则将按照分配顺序进行验证。