CodeIgniter Active Record - 获取返回的行数并获取总和

Posted

技术标签:

【中文标题】CodeIgniter Active Record - 获取返回的行数并获取总和【英文标题】:CodeIgniter Active Record - Get number of returned rows and get the sum 【发布时间】:2014-07-21 11:48:59 【问题描述】:

我是 CodeIgniter 和 Active Record 的新手

如何获取返回的行数并获得两个返回表行数的总和。

我已经有这样的功能来获取行数

控制器

 function newsletter ()    
        $data = array();
        $data['subscriber_count'] =$this->mod_contactus->count_subscriber();
        $data['user_count'] =$this->mod_contactus->count_reg_users();
        $this->load->view('admin/admin_newsletter',$data);
    

型号

 public function count_subscriber() 
       return $this->db->get("tbl_subscribers")->num_rows();
       


    public function count_reg_users() 
        return $this->db->get("tbl_customer_registration")->num_rows();
    

【问题讨论】:

你试过 $this->db->count_all_results();或 $this->db->count_all(); ?参考:ellislab.com/codeigniter/user-guide/database/active_record.html 用简单的加法求和有什么问题?您已经有了行数。 @WesleyMurch 是的,你是对的。 【参考方案1】:

这没什么大不了的。你可以做这样的事情。协助 php array_sum .这是php manual to array sum 你已经有了行数

在你的控制器中

function newsletter ()    
    $data = array();
    $data['subscriber_count'] =$this->mod_contactus->count_subscriber();
    $data['user_count'] =$this->mod_contactus->count_reg_users();
    $data['count_both'] =  array_sum($data);
    $this->load->view('admin/admin_newsletter',$data);    

在你看来echo $count_both ;

【讨论】:

【参考方案2】:

如果这真的是您唯一的目标,只需执行一个查询:

$query = $this->db->query("
    select 
    ( select count(*) from table_1 ) +
    ( select count(*) from table_2 ) 
    as total_num_row
    from table_1
");

# $query->num_rows()

【讨论】:

这就是我们所说的 ActiveRecord ;) 您应该更新之前的答案,而不是删除然后发布新答案

以上是关于CodeIgniter Active Record - 获取返回的行数并获取总和的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter Active Record 类插入

使用 CodeIgniter Active Record 语句

CodeIgniter Active Record 与常规查询

CodeIgniter Active Record 中的 SQL 注释?

动态 Active Record 查询中的 Codeigniter 括号

Where 子句 CodeIgniter 中的 Active Record 问题