2016-03-04 26 views
1

在我的模型我有這樣的代碼:無法從模型中獲取返回值笨

$sql = "SELECT SUM(options.points) as total 
      FROM responses 
      JOIN options ON options.option_id = responses.option_id 
      JOIN questions ON questions.question_id = responses.question_id 
      WHERE options.question_id = questions.question_id 
      AND questions.category_id = " . $category_id . " 
      AND responses.assessment_id = " . $assessment_id; 

    $results = $this->db->query($sql); 
    return $results->row()->total; 

在幫助我的代碼是:

$points = $nin->reportmodel->getTotalPointsAssessmentByCategory(100, $assessment_id); 

當我嘗試顯示「$點'沒有什麼或零。如果我將代碼移出模型並將其放入幫助程序中,代碼將起作用。我錯過了什麼?

+0

正在加載的數據庫?作爲一個快速測試,在模型的構造函數中,添加$ this-> load-> database();作爲次要的,試試這個$ this-> db-> query($ sql) - > result()[0] - > total;這是我現在用於獲取第一行的內容。 – Borgboy

+0

我必須怯懦地承認模型沒有加載數據庫。感謝名單。 –

+0

當你在你的視圖中加載時,你可以通過傳遞true作爲第三個參數來自動加載模型的數據庫:$ this-> load-> model('Model_name','',TRUE);但是當我知道其他開發人員正在使用代碼時,我幾乎總是將它加載到模型構造函數中。 – Borgboy

回答

0

請嘗試下面的代碼。

Your_model.php

class Your_model extends CI_Model { 

public function getTotalPointsAssessmentByCategory($category_id, $assessment_id) { 

$sql = "SELECT SUM(options.points) as total 
    FROM responses 
    JOIN options ON options.option_id = responses.option_id 
    JOIN questions ON questions.question_id = responses.question_id 
    WHERE options.question_id = questions.question_id 
    AND questions.category_id = " . $category_id . " 
    AND responses.assessment_id = " . $assessment_id; 

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

$row = $query->row(); 

return $row->total; 

} 

} 

在控制器

public function index() { 
    $this->load->model('your_model'); 

    $points = $this->your_model->getTotalPointsAssessmentByCategory(100, $assessment_id); 
}