2012-12-21 3 views
0

문서에 따르면 'none'이라는 세 번째 매개 변수를 같은 메서드에 전달하면 유사한 검색 쿼리에서 와일드 카드 문자를 사용하지 않아야합니다. 나는이 화면에 표시 것으로 예상CodeIgniter Active Record Like 3 매개 변수

$this->db->like('username', $search, 'none'); 
$this->db->limit(1); 
$q = $this->db->get('customers')->row(); 
var_dump($this->db->last_query());exit; 

:

임 곳 $ 검색 == 'test_username',이 일을

SELECT * FROM (`ci_customers`) WHERE `username` LIKE 'test_username' LIMIT 1 

하지만 대신 받고 있어요 :

SELECT * FROM (`ci_customers`) WHERE `username` LIKE '%test_username%' LIMIT 1 

메서드가 세 번째 매개 변수를 무시하고있는 것처럼 보입니다. 아니면 잘못된 것입니다. 어떤 아이디어? 나는 단지 쿼리를 작성하고 query() 메서드를 사용할 수 있지만 궁금합니다.

+0

그래, 그것이 가정되는 방법이있다 (http://ellislab.com/codeigniter/user-guide/database/active_record.html). 어떤 CI 버전을 실행하고 있습니까? – swatkins

+0

임 실행 버전 2.1.0 – Rooster

답변

1

"none"코드가 2.1.0 버전에 포함되어 있지 않은 것으로 보입니다. https://github.com/EllisLab/CodeIgniter/blob/v2.1.0/system/database/DB_active_rec.php#L639에 649-692 행을보십시오.

후 2.1.3 버전의 라인 664을보고 : 당신이 중 하나를 업그레이드하거나 DB_active_rec.php 파일에이를 추가 할 필요가 https://github.com/EllisLab/CodeIgniter/blob/2.1.3/system/database/DB_active_rec.php#L639

:

... 
if ($side == 'none') 
{ 
    $like_statement = $prefix." $k $not LIKE '{$v}'"; 
} 
... 
+0

아. 멋지다. 핵심 파일을 확인하려고했지만 올바른 파일을 찾을 수 없습니다. 설명 주셔서 감사합니다! – Rooster

+0

문제가 없지만 2.1.0 문서에 있지만 코드에서 제외되었습니다. – swatkins

관련 문제