检查小写和大写搜索

时间:2017-01-27 10:31:34

标签: laravel laravel-5 laravel-5.2

我正在使用此查询:

  public function autocomplete(Request $request)
   {
      $company_name = $request->input('query');
      $data = BusinessUser::where("company_name","LIKE",'%'. $company_name .'%')->pluck('company_name');
      return response()->json($data);
   }

在公司名称的数据库中,我可以这样:'测试','测试','测试'。 那么如何检查所有这些以便我得到结果。有什么建议吗?

我尝试了这个,但后来我得到一个错误,我需要传递数组:

  $data = BusinessUser::whereRaw("company_name","LIKE",'%'. $company_name .'%')->orWhereRaw("company_name","LIKE",'%'. $company_name .'%')->pluck('company_name');

编辑:

我不想改变数据库中的任何内容

4 个答案:

答案 0 :(得分:5)

您可以使用LOWER

BusinessUser::whereRaw('LOWER(`company_name`) like ?', ['%'.strtolower($company_name).'%'])->pluck('company_name');

答案 1 :(得分:0)

company_name的编码设置为utf8_general_ciCI表示不区分大小写。

答案 2 :(得分:0)

您的查询应如下所示:

$data = BusinessUser::whereRaw("company_name COLLATE UTF8_GENERAL_CI LIKE %{$company_name}%")->pluck('company_name');

答案 3 :(得分:0)

这是不使用 whereRaw 的答案:

use DB;

$data = BusinessUser::where(DB::raw('LOWER(company_name)'), 'like', '%' . strtolower($company_name) . '%');