【问题标题】:Codeigniter: Retrieving a variable from Model to use in a ControllerCodeigniter:从模型中检索变量以在控制器中使用
【发布时间】:2010-03-23 22:21:54
【问题描述】:

我敢打赌,这很容易,但尝试了一段时间,似乎无法让它发挥作用。基本上我正在设置分页,在下面的模型中,我想将 $total_rows 传递给我的控制器,这样我就可以将它添加到配置中,例如 '$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;
        }

    }

我了解如何使用 $this->example_model->example($something); 将内容从 Controller 传递给模型,但不确定如何从模型中获取变量?

【问题讨论】:

    标签: php codeigniter variables


    【解决方案1】:

    我认为在运行时更改配置不是一个好主意,但我有 3 种方法可以让您在控制器中获取 $total_rows 值。

    ideia 1.您可以将$total_rows 的值存储在会话中

    ideia 2. 通过引用传递变量(在函数定义中使用 &$total_rows,例如:

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

    阅读:http://php.net/manual/en/language.references.pass.php

    在您调用的控制器中:

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

    ideia 3.从函数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;
    

    问候,
    佩德罗

    【讨论】:

    • 嗨佩德罗,我似乎无法实现代码。我对 PHP 和 Codeigniter 相当陌生。如果我采用想法 2,我是否只需将 function get_timeline_filter($per_page, $offset, $source) 替换为 function get_timeline_filter($per_page, $offset, $source, &$total_rows) ?我会将什么作为代码放入控制器中,或者我只需要使用$config['total_rows'] = $total_rows; 我已经尝试过了,但我只是得到一个错误。模型错误 = Message: Missing argument 4 for Timeline_model::get_timeline_filter() 控制器错误 = Message: Undefined variable: total_rows
    • 嗨 Craig,我在 ideia 2 中做了一个更好的描述。请看一下,如果不明白,请随时询问更多信息
    【解决方案2】:

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

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

    【讨论】:

    • 我需要你的帮助..请在上面解释一下
    猜你喜欢
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多