2016-03-04 2 views
1

В моей модели у меня есть этот код:Невозможно получить возвращаемое значение из модели в Codeigniter

$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

Я должен смущенно признать, что модель НЕ БЫЛА ПОЛУЧИТЬ БЛОК. Thanx. –

+0

Вы можете заставить CI автоматически загружать БД для модели, передав 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); 
} 
Смежные вопросы