我使用活动记录返回日期的分组列表,其中包含以下代码:
function get_archive_links(){
$this->db->order_by('date','desc');
$this->db->group_by('MONTH(date), YEAR(date)');
$query = $this->db->get('blog');
foreach ($query->result() as $row) {
$data[] = array(
'id' => $row->id,
'date' => $row->date
);
}
return $data;
}
当我在页面上循环并回显时返回:
如何计算组中的每个项目并将其显示在列表中?例如:
我将计算每个月有多少博客帖子。
答案 0 :(得分:2)
您需要删除GROUP BY
然后在PHP中计数,或者在您的AR查询中添加->select('COUNT(id) AS num_posts')
。我可能会添加->select()
,因为它的工作量较少:)
答案 1 :(得分:1)
你可以使用sql count函数。如果您正在使用group by,则count函数返回行组的计数行。
像这样,function get_archive_links(){
$this->db->select("count(*) as count, blog.*);
$this->db->order_by('date','desc');
$this->db->group_by('MONTH(date), YEAR(date)');
$query = $this->db->get('blog');
foreach ($query->result() as $row) {
$data[] = array(
'id' => $row->id,
'date' => $row->date,
'count' => $row->count
);
}
return $data;
}
答案 2 :(得分:0)
这种方法很完美,但如果不存在类别
,则不会显示零计数这是我的功能,
function get_category_list()
{
$this->db->select("count(*) as num_posts,cb_category.*");
$this->db->where_in('cb_post.city', $city_ids);
$this->db->join('cb_posts', 'cb_post.category = cb_category.cat_id or cb_post.parent = cb_category.cat_id', 'left');
$this->db->order_by('cat_name_en', 'ASC');
$this->db->group_by('cb_category.cat_id');
$query = $this->db->get('cb_category');
}
答案 3 :(得分:0)
SELECT
categories.*,
COUNT(posts.category_id) AS `count`
FROM
(categories
LEFT JOIN
posts
ON posts.category_id = categories.category_id)
GROUP BY
Category_name;
我得到零计数问题的答案。