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,这显然是错误的.
我究竟做错了什么?
试试这个:
$this->db->where('read_date IS NULL', null, false);
Run Code Online (Sandbox Code Playgroud)
第三个参数告诉他不要逃避该条款......
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)
| 归档时间: |
|
| 查看次数: |
28351 次 |
| 最近记录: |