2016-07-28 3 views
0

Laravel Project에서 일하고 있는데 문제가 있음을 발견했습니다. 내 데이터베이스 (MySQL) 필드에 대문자로 저장됩니다. 아래에서 검색 할 때 문제가 있습니다. 예 FINDIK를 들어Mysql Search "I"대소 문자 구분하지 않음

$query->where(function ($query) use ($q) { 
    $query->orWhere('product', 'LIKE', '%'.$q.'%'); 
    $query->orWhere('stock_code', 'LIKE', '%'.$q.'%'); 
    $query->orWhere('barcode', 'LIKE', '%'.$q.'%'); 
    $query->orWhere('hs_code', 'LIKE', '%'.$q.'%'); 
}); 

는 터키의 말씀이다. 그리고 사용자가 검색 할 때 fındık 결과를 찾지 못했습니다.

MySQL 테이블에 unicode_general_ci을 사용하고 있습니다. 그리고 내 머리 코드는 아래와 같습니다.

<!doctype html> 
<html lang="tr"> 
<head> 
    <meta charset="UTF-8"> 

어떻게해야합니까? 어떤 사람들은 MySQL LOWER 메소드를 제공합니다. 그러나 더 좋은 방법이 존재하기를 바랍니다.

+0

를 사용하려고하세요? (: - :) –

+0

글쎄, 항상 상판을 사용할 수 있습니다 :-) – antorqs

+0

'FINDIK'로 결과를 얻고 싶습니까? 내가 아는 한 기본적으로 mysql은 대소 문자를 구별하지 않는다. –

답변

0
$query->where(function ($query) use ($q) { 
    $query->orWhere('product', 'ilike', '%'.$q.'%'); 
    $query->orWhere('stock_code', 'ilike', '%'.$q.'%'); 
    $query->orWhere('barcode', 'ilike', '%'.$q.'%'); 
    $query->orWhere('hs_code', 'ilike', '%'.$q.'%'); 
}); 

ILIKE에게 어떤 사람들은 제공 또는 SQL 이벤트

+0

SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1064 SQL 구문에 오류가 있습니다. 여러분의 MySQL 서버 버전에 해당하는 설명서를 확인하여 올바른 구문을 찾아서 'ilike? 또는'stock_code' ilike? 또는'barcode' ilike? ('stock_quantity'> 0) 및 ('product' ilike % fındık % 또는'stock_code' ilike % fındık %) 행에서의 'aggregate from select' 또는 'barcode' ilike % fındık % 또는'hs_code' ilike % fındık %)) –

+0

작동하지 않습니다. –

+0

'ILIKE'는 MySQL에서는 작동하지 않고 PostgreSQL 만 작동합니다. https://www.postgresql.org/docs/8.3/static /functions-matching.html –

관련 문제