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()
我在 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()