2017-06-06 79 views
1

我目前使用下面的代碼來總結基於ID 針對mysql數量列的數量的數量,只是想知道這是否是使用codeigniter的最佳做法?或者是否有更簡單的方法來執行此操作。什麼是使用codeigniter的SUM列值的最佳做法

我Model.php

public function sum_quantity_of_stacks($id){ 

     $query = $this->db->query("SELECT *, SUM(qty) as total FROM stocks WHERE drug_id = '$id'"); 
     return $query->row_array(); 

    } 

    public function sum_quantity_of_request($id){ 

     $query = $this->db->query("SELECT *,SUM(quantity) as total_request FROM med_request WHERE med_given = '$id' AND status = 'Approved'"); 
     return $query->row_array(); 

    } 

然後我view.php

$id = $medicine['ID']; 

     $data['get_count'] = $this->Medicine_model->sum_quantity_of_stacks($id); 

     $data['get_request'] = $this->Medicine_model->sum_quantity_of_request($id); 

     $total_available = $data['get_count']['total']; 
     $total_given = $data['get_request']['total_request']; 

     echo $total_available - $total_given; 

上面的代碼給我我的藥品庫存的當前可用的股票。

回答

0

不,沒有這樣的方式來做這件事,類似於你現在正在做的事情。

選擇另一列與求和功能無法

但也有一個方法名select_sum()提供查詢生成器,通過它可以得到SUM只喜歡

public function sum_quantity_of_stacks($id){ 
    $this->db->select_sum('qty','total'); 
    $this->db->where('drug_id',$id); 
    $query = $this->db->get('stocks'); 
    $res = $query->row_array(); 
    //now SUM is available in $res['total'] 
    return $res['total']; 
    // or return $query->row_array(); 
} 
相關問題