我想将以下 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);
但是结果并不兼容。你能指出这里有什么问题吗?
我也可以接受不专门使用活动记录进行查询的建议。
正确的查询是
$query = $this->db
->select('*')
->from('relation')
->group_start()
->where('user1', $ID)
->or_where('user2', $ID)
->group_end()
->where('status', 2)
->where('action !=', 1)
->get();
当您在多个条件之间使用
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);
希望这对您有帮助:
$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