如何使用CodeIgniter的ActiveRecord选择列值不为N的行?

2022-08-30 08:22:00

我正在使用CodeIgniter的Active Record类来查询MySQL数据库。我需要选择表中字段未设置为 NULL 的行:

$this->db->where('archived !=', 'NULL');
$q = $this->db->get('projects');

这只返回以下查询:

SELECT * FROM projects WHERE archived != 'NULL';

该字段是一个字段。archivedDATE

有没有更好的方法来解决这个问题?我知道我可以自己编写查询,但我想在整个代码中坚持使用活动记录。


答案 1
where('archived IS NOT NULL', null, false)

答案 2

Active Record肯定有一些怪癖。当您将数组传递给函数时,它将生成一个 IS NULL。例如:$this->db->where()

$this->db->where(array('archived' => NULL));

生产

WHERE `archived` IS NULL 

怪癖是负数没有等价物。但是,有一种方法可以产生正确的结果并仍然转义语句:IS NOT NULL

$this->db->where('archived IS NOT NULL');

生产

WHERE `archived` IS NOT NULL

推荐