我正在尝试使用代码点火器的活动记录类来构建查询,如下所示:
SELECT * from contacts where account = 1 and (fname like 'k%' or lname like 'k%')
但是我不确定如何使用这些功能来执行此操作。
和想法?
答案 0 :(得分:3)
$this->db->where('account', '1');
$this->db->where(' (fname LIKE "k%" OR lname LIKE "k%" ) ');
$query = $this->db->get('contacts');
然后就像正常的Codeigniter数据库结果一样处理$query
。
答案 1 :(得分:1)
您也可以使用类似查询
$this->db->like('title', 'match');
// Produces: WHERE title LIKE '%match%'
和or_like
$this->db->like('title', 'match');
$this->db->or_like('body', $match);
答案 2 :(得分:0)
您始终可以将其作为普通查询运行:
$sql = "SELECT * from contacts where account = 1 and (fname like ? or lname like ?)";
$query = $this->db->query($sql, array( $like1, $like2));
我比活跃的记录类更频繁地使用它,因为我热衷于编写sql语句。
答案 3 :(得分:0)
您可以使用ellislab论坛https://ellislab.com/forums/viewthread/185983/中的建议,而不是使用普通查询。 而不是使用
$this->db->like('location', $your_string);
使用:
$this->db->where('location LIKE', '%'.$your_string.'%');
和 or_where 而不是或_like 。
答案 4 :(得分:0)
您可以使用CI 3.0中的查询分组
$this->db->select('*')->from('contacts ')
->group_start()
->like('fname', 'k', 'after');
->or_like('lname', 'k', 'after');
->group_end()
->where('account', 1)
->get();