简体   繁体   中英

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

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

将$ total_rows设置为模型中的类变量,并像其他任何类变量一样从控制器访问它

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM