开发者

Codeigniter: Retrieving a variable from Model to use in a Controller

开发者 https://www.devze.com 2022-12-23 18:23 出处:网络
I bet this is easy but been trying for a while and can\'t seem to get it to work. Basically I am setting up pagination and in the model below I want to pass $total_rows to my controller so I can add i

I bet this is easy but been trying for a while and can't seem to get it to work. Basically I am setting up pagination and in the model below I want to pass $total_rows to my controller so I can add it to the config like so '$config['total_rows'] = $total_rows;'.

function get_timeline_filter($per_page, $offset, $source) 
    {
        $this->db->where('source', $source);
        $this->db->order_by("date", "desc");
        $q = $this->db->get('timeline', $per_page, $offset);
        $total_rows = $this->db->count_all_results();

        if($q->num_rows() >0) 
        {
        开发者_运维技巧    foreach ($q->result() as $row) 
            {
                $data[] = $row;                 
            }
            return $data;
        }

    }

I understand how to pass things form the Controller to the model using $this->example_model->example($something); but not sure how to get a variable from the model?


I think changing your config in runtime is not good ideia, but I have 3 ways for you get the $total_rows value in your controller.

ideia 1. You can store the value of $total_rows in the session

ideia 2. pass the variable by reference (using &$total_rows in the function definition ex:

function get_timeline_filter($per_page, $offset, $source, &$total_rows) 

read this: http://php.net/manual/en/language.references.pass.php

in your controller you call:

$total_rows=0;
$result=$this->model_name->get_timeline_filter($per_page, $offset, $source, &$total_rows);

ideia 3. return the value from the function ex:

(...)

if($q->num_rows() >0) 
{
    foreach ($q->result() as $row) 
    {
        $data[] = $row;                 
    }
    return $data;
}

$final_data['total_rows']=$total_rows;
$final_data['data']=$data;

return $final_data;

Regards,
Pedro


Set $total_rows as a class variable in the model and access it from your controller as if it were any other class variable

$total = $this->dbmodelname->total_rows;
0

精彩评论

暂无评论...
验证码 换一张
取 消