来自的Laravel验证请求
我有laravel验证请求表,如下所示:来自的Laravel验证请求,laravel,validation,Laravel,Validation,我有laravel验证请求表,如下所示: public function rules() { $id = $this->input('wlId'); return [ 'id' => ['sometimes ', 'integer'], 'domain_name' => ['required', 'string', 'unique:white_label,domain_name' . $id],
public function rules()
{
$id = $this->input('wlId');
return [
'id' => ['sometimes ', 'integer'],
'domain_name' => ['required', 'string', 'unique:white_label,domain_name' . $id],
'disabled' => ['required', 'boolean']
];
}
在唯一性检查期间,我为ignore my entry设置了id,但如果id不是整数,例如字符串,那么我将从验证器获得sql错误
如果id字段未通过验证,如何停止验证?您将在使用
unique
验证规则时忽略某个值。
考虑下面的片段;
use Illuminate\Validation\Rule;
// ...
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']
];
}
有关更多详细信息,请参阅此链接 如中所述,您可以使用bail
规则
有时,您可能希望在第一次验证失败后停止对属性运行验证规则。为此,请将bail规则指定给该属性
$request->validate([
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',
]);
在本例中,如果title属性上的唯一规则失败,则不会检查max规则。规则将按其分配的顺序进行验证。因为您指定了应为整数:
'id'=>[“有时”,“整数”],
这意味着应仅为整数,但如果您希望为整数,则应使用“数值”键停止我对某个字段的验证,但仍将进行进一步验证。在你的例子中。如果未通过标题字段,则将不再验证unique:posts,但仍将验证body字段。我不希望在标题字段验证失败的情况下验证body字段,这与我的示例中的情况相同。如果没有传递id字段,则会出现sql错误。因为验证程序将尝试通过id从white_label表中获取域名