2011-02-03 6 views
4

私は、次のコードを持っている:CodeIgniterのActiveRecordのクエリ

$this->db->from('addresses'); 
$this->db->where('user_id', $this->session->userdata('user.id')); 
$this->db->like('country', $pSearch); 
$this->db->or_like('state', $pSearch); 
$this->db->or_like('city', $pSearch); 
$this->db->or_like('zip', $pSearch); 

それはこのようにそれを発生させる方法があり、以下のSQL

SELECT * 
FROM (`addresses`) 
WHERE `user_id` = '1' 
AND `country` LIKE '%d%' 
OR `state` LIKE '%d%' 
OR `city` LIKE '%d%' 
OR `zip` LIKE '%d%' 
ORDER BY `country` asc 
LIMIT 15 

を生成します。

SELECT * 
FROM (`addresses`) 
WHERE `user_id` = '1' 
AND (`country` LIKE '%d%' 
OR `state` LIKE '%d%' 
OR `city` LIKE '%d%' 
OR `zip` LIKE '%d%') 
ORDER BY `country` asc 
LIMIT 15 

を私はuser_id = 1のレコードだけを取得し、すべてのユーザーは取得しません。

答えて

2

これは、CI ActiveRecordのバグ/制限のようです。 Ignited QueryはネストされたWHERE句を扱うことができ、ネストされたWHERE/LIKEのような処理が可能です。

Check out this thread also for more info.

+0

I)は、(自分自身を照会し、DB->クエリを使用してSQLを作成することになりました。 – daniels