类似查询生成器的laravel不敏感-oracle

类似查询生成器的laravel不敏感-oracle,laravel,oracle11g,datatables,Laravel,Oracle11g,Datatables,我将oracle 11作为数据库,在oracle中使用“like”查询进行搜索是区分大小写的 所以,我想做一个查询,在那里我可以搜索不敏感的文本 $query = DB::table('some_table'); return Datatables::of($query) ->filter(function ($query) use ($request) { if ($request->has('search_text')) { $query->

我将oracle 11作为数据库,在oracle中使用“like”查询进行搜索是区分大小写的

所以,我想做一个查询,在那里我可以搜索不敏感的文本

$query = DB::table('some_table');

return Datatables::of($query)
  ->filter(function ($query) use ($request) {
      if ($request->has('search_text')) {
        $query->where(DB::raw("lower(kolom) like '%' || lower('$request->get(search_text)') || '%')"));
      }
  })
->make(true);
所以我尝试使用上面的语句。但查询结果为:

select * from some_table where lower(kolom) like '%' || lower('search_text') || '%' is null
这里有一个null,使得查询出错。 工作查询应为:

select * from some_table where lower(kolom) like '%' || lower('search_text') || '%'
我应该怎么做才能从那里删除空值?我使用Laravel5.2使用方法而不是where


唯一需要补充的是,您应该更好地使用变量的绑定来实现最佳的DB交互。例如:$query->whereRawDB::rawlowerkolom类似“%”| | lower | |“%”,[$request->getsearch_text];
return Datatables::of($query)  ->filter(function ($query) use ($request) {
  if ($request->has('search_text')) {
    $query->whereRaw(DB::raw("lower(kolom) like '%' || lower('$request->get(search_text)') || '%')"));
  }
})->make(true);