2011-10-07 99 views
2

我在数据库中存储数量的值(int)。我需要通过将所有行总计加在一起来计算总数量。 $ this-> db-> count_all_results()的问题是它返回的是总行数,但不计算所有存储的值。任何帮助将非常感激。用Codeigniter Active Record计算行总数

function currentDealTotalQuantity($id) 
{ 

    $this->db->select('quantity'); 

    $this->db->from('table'); 

    $this->db->where('id', $id); 

    $total_sold = $this->db->count_all_results(); 

    if ($total_sold > 0) 
    { 
     return $total_sold; 
    } 

    return NULL; 

} 

回答

3
function currentDealTotalQuantity($id) 
{ 

    $this->db->select_sum('quantity'); 

    $this->db->from('table'); 

    $this->db->where('id', $id); 

    $query = $this->db->get(); 

    $total_sold = $query->row()->quantity; 

    if ($total_sold > 0) 
    { 
     return $total_sold; 
    } 

    return NULL; 

} 
+0

收到此错误:类CI_DB_mysql_result的对象无法转换成int – undertokyo

+0

编辑。现在请尝试这个。 –

+0

就是这样!谢谢。 – undertokyo

3

我相信你想这个家伙:$this->db->select_sum();

你用它取代你的SELECT语句,让你有$this->db->select_sum('quantity');这将产生的查询字符串SELECT SUM(quantity) as quantity

的文档中找到here

2
function currentDealTotalQuantity($id) 
{ 
    $qry = $this->db->select_sum('quantity') 
    ->from('table') 
    ->where('id', $id) 
    ->get(); 

    if ($qry->num_rows() === 0) 
    { 
     return FALSE; 
    } 

    return $qry->row('quantity'); 
}