2017-02-07 4 views
0

У меня есть оракул 11 в качестве базы данных, а поиск в оракуле с запросом «как» чувствителен к регистру.laravel нечувствительный, как построитель запросов - оракул

поэтому, я хочу сделать запрос, где я могу искать нечувствительный текст.

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

, что я должен сделать, чтобы удалить «равно нулю» оттуда? (Я использую laravel 5.2)

ответ

1

Используйте метод whereRaw вместо where.

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