如何在codeigniter中用OR子句重写SQL语句


How do I rewrite SQL statement with OR clause in codeigniter

我已经检查了有关此的其他问题,但无法解决问题

$this->db->where(array('sender_deletedS' => 1, 'receiver_deleted' => 0 ));
            $this->db->or_where(array('sender_deletedS' => 0, 'receiver_deleted' => 1 ));
            $this->db->or_where(array('sender_deletedS' => 0, 'receiver_deleted' => 0 ));
            $query2 = $this->db->get('message');

它产生

SELECT * FROM `message` WHERE `sender_deletedS` = 1 AND `receiver_deleted` =0 OR `sender_deletedS` =0 OR `receiver_deleted` = 1 OR `sender_deletedS` =0 OR `receiver_deleted` =0

但是我想要这个

SELECT * FROM `message` WHERE `sender_deletedS` = 1 AND `receiver_deleted` =0 OR `sender_deletedS` =0 AND `receiver_deleted` = 1 OR `sender_deletedS` =0 AND `receiver_deleted` =0
$sql = "sender_deleted = 1 AND receiver_deleted = 0 OR   sender_deleted = 0 AND receiver_deleted = 1 OR 
sender_deleted = 0 AND receiver_deleted = 0
"; 
$this->db->where($sql);
$this->db->get('message') ;

该语句可以使用变量存储和执行,如上面的示例所示

如果您在使用查询生成器或活动记录时感到困惑,请尝试传统的SQL方法。也很容易理解

$this->db->query("SELECT * FROM `message` WHERE `sender_deletedS` = 1 AND `receiver_deleted` =0 OR `sender_deletedS` =0 AND `receiver_deleted` = 1 OR `sender_deletedS` =0 AND `receiver_deleted` =0");

or_where将生成一个OR联接语句。如果其组合,则其作用为CCD_ 3。

示例01

$this->db->or_where('user_id =', 0);
$this->db->or_where('member_id =',  1);

输出将为

WHERE user_id = 0 OR member_id = 1

示例02

$this->db->or_where(array('user_id' => 0, 'member_id' => 1 ));

输出将为

WHERE user_id = 0 AND member_id = 1

示例03

$this->db->or_where(array('user_id' => 0, 'member_id' => 1 ));
$this->db->or_where('library_id =',  0);

输出将为

WHERE user_id = 0 AND member_id = 1 OR library_id = 0

codeignlighter.com 中的$this->db->or_where()