值为NULL Codeigniter

Joh*_*ith 5 php sql activerecord codeigniter

我试图创建以下语句(有效):

SELECT id, COUNT(*) AS item_count FROM message WHERE user_id_to = '1' AND read_date IS NULL GROUP BY message_id
Run Code Online (Sandbox Code Playgroud)

使用Codeigniters Active Record.我的代码看起来像这样:

$this->db->select('id');
$this->db->from('message');
$this->db->where('user_id_to', $this->session->userdata('id'));
$this->db->where(array('read_date' => NULL));
$this->db->group_by('message_id');
echo $this->db->count_all_results();
Run Code Online (Sandbox Code Playgroud)

我已检查过$ this-> session-> userdata('id')输出与我的"常规"SQL语句相同的ID,它是正确的.

奇怪的是,我的"常规"语句返回2,这是正确的.但我的Codeigniter statmenet返回3,这显然是错误的.

我究竟做错了什么?

Pet*_*tra 8

试试这个:

$this->db->where('read_date IS NULL', null, false);
Run Code Online (Sandbox Code Playgroud)

第三个参数告诉他不要逃避该条款......


Nar*_*arf 1

count_all_results()将替换整个 SELECT 子句,生成的查询将是这样的:

SELECT COUNT(*) AS numrows
FROM message
WHERE user_id_to = <your value> AND read_date IS NULL
GROUP BY message_id
Run Code Online (Sandbox Code Playgroud)

...当然,我跳过任何括号和转义字符,但它们在这里无关紧要。

只需将整个事情放入您的select()通话中即可:

$this->db->select('id, COUNT(*) as item_count');
Run Code Online (Sandbox Code Playgroud)