【问题标题】:CodeIgniter - order my 'posts' by month?CodeIgniter - 按月订购我的“帖子”?
【发布时间】:2013-06-13 03:42:37
【问题描述】:

在我的网站中,我想创建一个“存档”列表来对我的帖子进行分类。

我的posts 表是这样设置的: 标识 | post_title |发布 |发表 |年份 |月份

目前这个model函数拉取帖子:

function getNews(){
     $data = array();
     $this->db->order_by("id", "desc");
     $Q = $this->db->get('posts');
     if ($Q->num_rows() > 0){
       foreach ($Q->result_array() as $row){
         $data[] = $row;
       }
    }
    $Q->free_result();  
    return $data;
}   

但是,我可以创建如下列表吗?

July (12)

June (5)

May (2)

所以它列出了当月的月份和帖子数?

到目前为止,我所有的尝试都以沮丧和泪水告终。任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql codeigniter count group-by


    【解决方案1】:

    试试这个

    SELECT  `year`,`month`,(SELECT COUNT(id) FROM `posts` WHERE `month` =p.`month`) AS c
    FROM `posts` p  GROUP BY p.`month` ORDER BY `month`
    
    function getNews(){
     $data = array();
    
     $Q = $this->db->query('SELECT `year`,`month`,(SELECT COUNT(id) FROM `posts` WHERE `month`=p.`month`) AS c FROM `posts` p  GROUP BY p.`month`ORDER BY `month`');
     if ($Q->num_rows() > 0){
       foreach ($Q->result_array() as $row){
         $data[] = $row;
       }
    }
    $Q->free_result();  
    return $data;
    }
    

    【讨论】:

    • 对 dianuj 的回答稍作修改是也引入了 year ,否则你最终会得到每年的所有月份。 SELECT month,year,( SELECT COUNT(id) FROM test WHERE month = p.month) AS c FROM test p ORDER BY p.year, p.month ;
    • @mplf 你是对的,我同意,但他没有在他的问题中提到,尽管我会在我的回答中添加该列:)
    • 谢谢。今天晚些时候我会试试这个并回复你。再次感谢您的快速回复。
    【解决方案2】:

    这与 codeigniter 无关,但无论如何我都会回答你。

    使用 SELECT Count(*) 然后按“月”排序,编写一个查询并使用它运行它

    http://ellislab.com/codeigniter/user-guide/database/queries.html

    【讨论】:

      猜你喜欢
      • 2013-03-18
      • 2018-03-04
      • 2023-01-23
      • 1970-01-01
      • 2014-02-14
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多