Laravel 验证唯一忽略小写或大写

Laravel validation unique ignore lowercase or uppercase

我在 1 个字段中进行了唯一验证,例如我输入了“pizza”,而“pizza”已经存在,所以它自动不起作用,但如果我输入“Pizza”,则字母“p”很大它仍然通过,我该如何解决?

所以我想验证的时候他不注意小写还是大写

这是我的代码:

$exists = Category::where(\Str::lower('name'), '=', \Str::lower(request('name')))->orderBy('name')->first();
            if ($exists) {
                return redirect()->route('categories.index')->with('error', 'Nama kategori sudah ada');
            } else {
                Category::create(request()->all());
            }

\Str::lower() 实际上在这里对你没有任何作用,因为它只是 returns 字符串 'name',然后作为第一个参数传递给 Builder::where() 函数。

你可以做什么利用 Builder::whereRaw() 函数并执行如下操作

Category::whereRaw('LOWER(`name`) = ?', \Str::lower(request('name')))->first()

但是 Eloquent 构建也可以,如果你做类似的事情(不要使用 = 符号)

Category::whereName(request('name'))->first()

Category::where('name', request('name'))->first()