【问题标题】:Model loaded in Codeigniter controller's constructor is not available by other functions of same controllersCodeigniter 控制器的构造函数中加载的模型不能被同一控制器的其他功能使用
【发布时间】:2011-12-06 00:06:46
【问题描述】:

我的模型:如下所示,非常基础

class User extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function getAll()
    {
        $this->db->order_by("lastName", "asc");
        $this->db->order_by("firstName", "asc");
        $this->db->order_by("userName", "asc");
        $query = $this->db->get('user');

        // test for result
        if($query->num_rows() > 0)
        {
            return $query->result();
        }

        return NULL;
    }
}

我的控制器:实际上是我的控制器的一部分,每次默认路由加载用户/显示功能时,都会出现错误(进一步向下)。加载到控制器构造器中的模型是否可以用于同一控制器中的所有其他功能?

class Users extends CI_Controller
{
    function __contruct()
    {
        parent::__construct();
        $this->load->model('user');
    }

    function display()
    {
        $data['users'] = $this->user->getAll();

        $head['pageTitle'] = 'Users Panel';

        $this->load->view('security/redirect');
        $this->load->view('template/head', $head);
        $this->load->view('user/usersPanel', $data);
        $this->load->view('template/foot');
    }
}

我的错误:参考上述控制器中的“$data['users'] = $this->user->getAll()”行

A PHP Error was encountered
Severity: Notice
Message: Undefined property: Users::$user

我的环境:

Codeigniter 2.1.0;
Mac Lion;
MAMP 2.0;

【问题讨论】:

    标签: function codeigniter model controller


    【解决方案1】:

    不应该这样吗:

    class Users extends CI_Controller
    {
        function __contruct()
        {
    

    像这样:

    class Users extends CI_Controller
    {
        function __construct()
        {
    

    用构造替换构造。

    【讨论】:

    • 这是我见过的最奇怪的答案;也是最搞笑的
    • @Lance 和 Yasky 尝试仔细查看答案。第一个构造没有 s。然后在第二个上有一个s。 :D
    • 我拼写一样。而且看了10遍也看不出区别。
    【解决方案2】:

    不应该这样吗:

    $data['users'] = $this->user->getAll();
    

    是这样的:

    $data['users'] = $this->user_model->getAll();
    

    对不起 还有型号名称:

    $this->load->model('user_model');

    类名 User_model 扩展 CI_Model

    我所有的 CI 项目都是这样设置的。

    http://codeigniter.com/user_guide/general/models.html

    【讨论】:

    • 已经尝试过了。还是一样的错误。与将其更改为大写“用户”相同。
    • 您是否在模型文件中尝试大写User_model,在控制器中尝试使用$this->user_model(小写)?
    • 您使用的是自定义模型类吗?我的 CI 项目模型扩展了 Model,而不是 CI_Model。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多