【问题标题】:CI3.x Active Record - How to chain query with aliased fieldsCI3.x Active Record - 如何使用别名字段链接查询
【发布时间】:2019-06-20 15:20:14
【问题描述】:

这是我正在尝试构建的有效查询:

         select
                year(created_timestamp) as year,
                month(created_timestamp)as month,
                MONTHNAME(created_timestamp) month_name,
                count(*) total_published
                From posts
                GROUP BY year, MONTH(created_timestamp), MONTHNAME(created_timestamp)
                ORDER BY year DESC, month DESC';

现在我正在尝试使用活动记录构建上述查询,如下所示:

    $this->db->simple_query('year(created_timestamp) as year, 
    month(created_timestamp) as month, monthname(created_timestamp) as monthname, 
    COUNT(*) post_count');

     $this->db->group_by('year');
     $this->db->group_by('monthname');
     $this->db->group_by('month');
     $this->db->order_by('year', 'desc');
     $this->db->order_by('month', 'desc');       
     $this->db->from('posts');
     $query = $this->db->get();

以下是我得到的错误。它显然不知道别名。如何让 CI 识别别名?

Unknown column 'year' in 'order clause'

SELECT * FROM `posts` GROUP BY `year`, `monthname`, `month` ORDER BY
 `year` DESC, `month` DESC

一些调试工作产生了解决方案:

经过多次调试,解决办法是这样的:

 function blog_archive(){
    $this->db->select('year(created_timestamp) as year, month(created_timestamp) as month, monthname(created_timestamp) as monthname, COUNT(*) post_count');
    $this->db->from('posts');
    $this->db->group_by('year');
    $this->db->group_by('monthname');
    $this->db->group_by('month');
    $this->db->order_by('year', 'desc');
    $this->db->order_by('month', 'desc');
    $blog_archive = $this->db->get()->result_array();;
    return $blog_archive;
 }

【问题讨论】:

    标签: php codeigniter activerecord


    【解决方案1】:

    解决办法是:

     function blog_archive(){
        $this->db->select('year(created_timestamp) as year, month(created_timestamp) as month, monthname(created_timestamp) as monthname, COUNT(*) post_count');
        $this->db->from('posts');
        $this->db->group_by('year');
        $this->db->group_by('monthname');
        $this->db->group_by('month');
        $this->db->order_by('year', 'desc');
        $this->db->order_by('month', 'desc');
        $blog_archive = $this->db->get()->result_array();;
        return $blog_archive;
       }
    

    【讨论】:

      猜你喜欢
      • 2019-03-12
      • 1970-01-01
      • 2020-05-16
      • 2013-06-02
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多