2017-02-07 11 views
0

私はデータベースとしてOracle 11を使用していますが、「like」問合せを使用したoracleでの検索では大文字と小文字が区別されます。laravel insensitive query builder - oracle

このように、私は非センシティブなテキストを検索できるクエリを作成したいと思います。

$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') || '%' 

私は削除するために何をすべきそこから「nullですか」? (私はlaravel 5.2を使用します)

答えて

1

whereの代わりにwhereRawメソッドを使用してください。

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);