使 Laravel 的 notIn 验证规则不区分大小写

Mac*_*Ill 1 php mysql forms validation laravel

我在我的数据库中存储了一个字符串数组(db 列类型是 JSON)。有一个表单允许用户向这个数组添加一个值。我想确保此数组中没有重复项。该notIn验证规则出现是防止重复最简单的解决方案,但它是区分大小写。因此,当使用 notIn 时,我无法阻止大小写不同的相同字符串。

$this->validate(request(), [
    'choice' => [
        'required',
        Rule::notIn($choices)
    ]
]);
Run Code Online (Sandbox Code Playgroud)

有没有人建议我应该如何修复此验证,以便字符串比较不区分大小写?

Ram*_*ira 5

您可以像这样将输入数据和当前数据小写:

$input = request()->all();
$input['choice'] = array_map("strtolower", $input['choice']);
$this->validate($input, [
    'choice' => [
        'required',
        Rule::notIn(array_map("strtolower", $choices))
    ]
]);
Run Code Online (Sandbox Code Playgroud)