在 Codeigniter 中组合 mysql AND OR 查询

2022-08-30 13:30:22

我想在CI中组合AND或mysql查询。我已经看到了这个帖子:http://codeigniter.com/forums/viewthread/92818/。但是他们没有在那里提供确切的解决方案。

如何使用严格的 CI 框架创建以下查询?(我可以在没有括号的情况下轻松创建查询,但它不是同一个查询。

SELECT * FROM `Persons` WHERE
LastName='Svendson' AND Age="12" AND
(FirstName='Tove' OR FirstName='Ola' OR Gender="M" OR Country="India") 

P.S.:这只是一个示例查询,即使它没有意义,也不建议在单个查询中编写查询的整个OR部分。where()

编辑:基本上,我想要实现以下简单查询:

SELECT * FROM `table` WHERE field1='value1' AND (field2='value2' OR field3='value3') 

答案 1

在CodeIgniter 3中,有group_start()和group_end()的新方法,它们正是为此目的而设的。

return $this->db
     ->where('LastName', 'Svendson');
     ->where('Age', 12);
     ->group_start()
         ->where('FirstName','Tove')
         ->or_where('FirstName','Ola')
         ->or_where('Gender','M')
         ->or_where('Country','India')
     ->group_end()
     ->get('Persons')
     ->result();

答案 2

这将起作用吗?

$this->db->where('LastName', 'Svendson');
$this->db->where('Age', 12);
$this->db->where("(FirstName='Tove' OR FirstName='Ola' OR Gender='M' OR Country='India')", NULL, FALSE);
$query = $this->db->get('Persons');
return $query->result();

推荐