2015-04-27 3 views
0

У меня есть запрос Postgres SQL в Laravel:Laravel Postgres SQL Case Нечувствительность Как

$_query = Article::join('users', 'articles.user_id', '=', 'users.id') 
        ->select('users.*','articles.*');       
if(array_key_exists('title', $parameters) && $parameters['title'] != '')  
     $_query->whereRaw(" LOWER(nbl_region_ref.region) like LOWER('%?%')", array(trim($parameters['region']))); 
$result = $_query->get(); 

Output/Error: 'PDOException' с сообщением «SQLSTATE [42P18]: Неопределенный тип данных: 7 ОШИБКА: не удалось определить данные тип параметра $ 2'

Пробовал строитель запросов:

$_query= DB::select("select users.*, articles.* from articles") 
       ->join('users', 'articles.user_id', '=', 'users.id'); 
if(array_key_exists('title', $parameters) && $parameters['title'] != '')  
      $_query->where("articles.title","ILIKE", array(trim($parameters['title']))); 
    $result = $_query->get(); 

Выход: Invalid FROM .. таблица не найдена

Пробовал ILIKE (основано на подобный вопрос без присоединиться)

$_query = Article::join('users', 'articles.user_id', '=', 'users.id') 
       ->select('users.*','articles.*');       
if(array_key_exists('title', $parameters) && $parameters['title'] != '')  
       $_query->where("articles.title","ILIKE", array(trim($parameters['title']))); 

Выход: Пустой массив

Пробовал:

$_query = Article::join('users', 'articles.user_id', '=', 'users.id') 
         ->select('users.*','articles.*');       

$_query->where(function ($_queryTemp) use ($parameters) { 
if(array_key_exists('title', $parameters) && $parameters['title'] != '')  
      $_query->whereRaw(" LOWER(nbl_region_ref.region) like LOWER('%?%')", array(trim($parameters['region']))); 
}); 

Выход/Error: 'PDOException' с сообщением «SQLSTATE [ 42P18]: Неопределенный тип данных: 7 ОШИБКА: не удалось определить тип данных параметра $ 2 '

Я должен сделать поисковый запрос без учета регистра на основе t он вводит параметр.

ответ

3

Ваша третья попытка выглядит так, как вы хотите. Основываясь на вашей первой и последней попытке, похоже, что вы хотите, чтобы текст поиска был завершен в «%». Поскольку вы не сделали этого для своей третьей попытки, я предполагаю, что поэтому ваш запрос не нашел никаких результатов (пустой массив).

Запрос должен быть:

$_query = Article::join('users', 'articles.user_id', '=', 'users.id') 
    ->select('users.*','articles.*'); 
if (array_key_exists('title', $parameters) && $parameters['title'] != '') { 
    $_query->where('articles.title', 'ILIKE', '%'.trim($parameters['title']).'%'); 
} 
+0

спасибо patricus..can't считает, что упущенным – zeetit

Смежные вопросы