2017-06-06 9 views
1

を使用してSUM列の値のベストプラクティスである私は現在、これはCodeIgniterのを使用してのベストプラクティスである場合だけで不思議、MySQLの数量の列をターゲットID に基づく量の数字を合計したコードの下に使用していますか?またはこれを実行するためのより短い方法があります。CodeIgniterの

マイ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(); 

    } 

その後

$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; 

コード上記の私のview.phpは私に私の薬の在庫の現在の利用可能在庫を与えます。

答えて

0

いいえ、あなたは今やっているのと同様に、そうする方法はありません。

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(); 
} 
のようにSUMを得ることができ、クエリビルダで利用可能なメソッド名 select_sum()がされていることにより、