首页 > 解决方案 > 使 Laravel 的 notIn 验证规则不区分大小写

问题描述

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

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

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

标签: phpmysqlformslaravelvalidation

解决方案


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

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

推荐阅读