代码之家  ›  专栏  ›  技术社区  ›  Davit Zeynalyan

如何在雄辩模型中搜索不区分大小写

  •  1
  • Davit Zeynalyan  · 技术社区  · 6 年前

    我不会在雄辩的模型中搜索不区分大小写的。 现在我用这个了

    Model::where($column, 'LIKE', '%' . $value . '%' ); 
    

    但它是区分大小写的。我怎么解决这个问题??
    我也找到这个帖子 How can I search (case-insensitive) in a column using LIKE wildcard? 但我不能用在雄辩的模型中

    4 回复  |  直到 6 年前
        1
  •  1
  •   Ts8060    6 年前

    我建议在这种情况下使用上函数

    Model::whereRaw("UPPER('.$column.') LIKE '%'". strtoupper($value)."'%'"); 
    

    这样地

        2
  •  5
  •   Stephen Rauch Madhusudan Sharma    6 年前

    实际上,你不需要使用 UPPER 只是使用 ilike 作为比较器,它将进行区分大小写的比较。

    Model::where('column', 'ilike', '%' . $value . '%')
    

    需要 % 表示正在搜索的子字符串的符号。

        3
  •  1
  •   guiCunha    6 年前

    你的表排序规则是什么?

    这是数据库中排序规则的一个特殊性,请尝试使用 拉丁语通用词 拉丁语 它们是不敏感的情况。

    但如果你想把这个拿进来 UTF8BIN 例如,它将不会运行,因为此排序规则是敏感的。

    所有示例都在MySQL下运行。

        4
  •  0
  •   Peace Ngara    6 年前

    已回答使用 iLike 算符,不区分大小写

    Laravel Eloquent Ignore Casing

    或者为了好玩,不推荐这样做。

    // prepare two variants of the same value ?
    // first to uppercase
    // second to lowercase
    
    $valueUp    = strtoupper($value);
    $valueLower = strtolower($value);
    
    Model::where($column, 'LIKE', '%' . ($valueUp || $valueLower) . '%' ); 
    

    没有测试过,但这是赢的主意。