phpcodeignitermodel-view-controllerreturn-value

CodeIgniter model method not returning value to controller


I'm using the count_all_results() function to return a user's number of languages spoken. But when I try to pass the number to the view, I keep getting a php undefined variable (for $lang_cnt). Below is my code:

Model

function countLanguages($id, $cnt_languages) {
    
    $this->db->where('user_id', $id)->from('languages');
    $cnt_languages = $this->db->count_all_results();
}

Controller

function showLangCount() {

    $data['lang_cnt'] = $this->language_model->countLanguages($cnt_languages);
                        
    $this->load->view('lang_view', $data);
}

View

<p>This user speaks <?php echo $lang_cnt; ?> languages.</p>

Solution

  • One problem is that your model function takes two arguments:

    function countLanguages($id, $cnt_languages)
    

    But when you call it you are only passing one argument:

    $this->language_model->countLanguages($cnt_languages);
    

    And an even bigger problem, as Rocket points out, is that countLanguages doesn't return anything. Try this:

    function countLanguages($id) {
      $this->db->where('user_id', $id)->from('languages');
      return $this->db->count_all_results();
    }