Laravel - 验证输入是否在区间 [-1, 10] 内而不是 0。not_in 工作不正常?

Laravel - validate input to be in the interval [-1, 10] without 0. not_in not working properly?

正如标题所说,我在验证输入字段时遇到问题,就像我在标题中所说的那样。

我这样试过:

$request->validate([
            'nota' => 'min:-1|not_in:0|max:10',
        ]);

基本上,我希望这个“nota”字段的值在 [-1, 10] 区间内而不是 0。

但我仍然可以输入0。

为什么它不起作用,我该如何解决?

你可以这样试试:

use Illuminate\Validation\Rule;

$request->validate([
    'nota' => [Rule::notIn([0]), 'between:-1,10'],
]);

或像这样自己生成数字:

    $request->validate([
        'nota' => Rule::in(array_diff(range(-1, 10), [0])),
    ]);