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
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;
精彩评论