代码点火器查询:如何构建此查询

时间:2011-01-31 19:51:47

标签: php sql codeigniter

我正在尝试使用代码点火器的活动记录类来构建查询,如下所示:

SELECT * from contacts where account = 1 and (fname like 'k%' or lname like 'k%')

但是我不确定如何使用这些功能来执行此操作。

和想法?

5 个答案:

答案 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();