我想将以下SQL查询转换为codeIgniter活动记录格式
SELECT * FROM `relation`
WHERE (`user1` = 144 OR `user2` = 144)
AND `status` = 2
AND `action` != 1
我的尝试是这样的,
$ID=144;
$this->db->where('user1', $ID);
$this->db->or_where('user2', $ID);
$this->db->where('status', 2);
$this->db->where('action!=', 1);
但结果不兼容。你能指出这里的东西吗?
对于没有专门为查询使用活动记录的建议,我也没问题。
答案 0 :(得分:3)
正确的查询将是
$query = $this->db
->select('*')
->from('relation')
->group_start()
->where('user1', $ID)
->or_where('user2', $ID)
->group_end()
->where('status', 2)
->where('action !=', 1)
->get();
答案 1 :(得分:2)
由于您在多个条件之间使用OR
,因此必须将其括在括号中。更改您的代码如下:
$this->db->where('(user1', $ID,FALSE);
$this->db->or_where("user2 = $ID)",NULL,FALSE);
$this->db->where('status', 2);
$this->db->where('action!=', 1);
答案 2 :(得分:2)
希望这会对您有所帮助:
$ID = 144;
$this->db->select('*');
$this->db->from('relation');
$this->db->where('user1', $ID);
$this->db->or_where('user2', $ID);
$this->db->where('status', '2');
$this->db->where('action !=', '1');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
print_r($result);
//return $query->result();
}
更多信息:https://www.codeigniter.com/user_guide/database/query_builder.html#looking-for-specific-data