来自的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],

我有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']
    ];
}
在唯一性检查期间,我为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表中获取域名