【问题标题】:Laravel validation unique ignore lowercase or uppercaseLaravel 验证唯一忽略小写或大写
【发布时间】:2021-11-05 05:54:31
【问题描述】:

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

【问题讨论】:

  • 考虑将= 更改为ILIKE

标签: laravel validation unique


【解决方案1】:

您可以利用 Builder::whereRaw() 函数执行以下操作

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

但是,如果您执行类似的操作(不要使用 = 符号),Eloquent 构建也可以工作

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

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

【讨论】:

  • 我认为您的 Eloquent 示例不会起作用,除非您的 SQL 数据库启用了不区分大小写的编码。
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多