我正在使用CodeIgniter 2.1。
我有一个包含firstname和lastname以及其他列的表
我希望得到那些firstname like '%q%' OR lastname like '%q' AND Status = 1
我正在使用以下Active Record集:
$this->db->select("$this->table.*, $this->table.Active as 'Status'");
$like = array(
"$this->table.FirstName" => $where['customer_name'],
"$this->table.LastName" => $where['customer_name']
);
$this->db->or_like($like);
生成的查询是:
SELECT `customers`.*, `customers`.`Active` as 'Status'
WHERE `customers`.`Active` = '1' AND
`customers`.`FirstName` LIKE '%michael%' OR
`customers`.`LastName` LIKE '%michael%'
ORDER BY `customers`.`RegDate` desc LIMIT 10
以上查询为那些以名字或姓氏“活跃”为1的“michael”的客户带来了所有记录,其中包含michael他们是否有效。
我需要那些在名字或姓氏中有'micheal'并且有效= 1的记录,我知道在自定义查询中,如果我在小括号'()'之间放置Like子句,它会给我我想要的结果。 我希望将上述查询解析为:
SELECT `customers`.*, `customers`.`Active` as 'Status'
WHERE `customers`.`Active` = '1' AND
(`customers`.`FirstName` LIKE '%michael%' OR
`customers`.`LastName` LIKE '%michael%')
ORDER BY `customers`.`RegDate` desc LIMIT 10
答案 0 :(得分:0)
我认为您还需要使用or_where函数
答案 1 :(得分:0)
在codeigniter中放置多个列的where和or_like时,分组不正确。 我也遇到过这个问题,
最好的解决方案是以字符串格式编写查询,然后执行它。
答案 2 :(得分:0)
//You can used like that
$this->db->where("(`car_model` LIKE '%$search_keyword_new%' OR `car_make_model` LIKE '%$search_keyword_new%' OR `car_name` LIKE '%$search_keyword_new%')");
$this->db->where('user_id',$user_id);