无法在CodeIgniter控制器中找到模型

时间:2016-05-05 18:44:17

标签: php codeigniter codeigniter-3

我在第8行加载Get_notes模型,但是当我想在第23行使用Get_notes模型加载add_notes方法时,会发生错误并说出Undefined property: Notes::$Get_notes在第23行! 23行有问题,但我不知道那是什么。请帮助我。 感谢

<?php

class Notes extends CI_Controller
{

    public function index()
    {
        $this->load->model('Get_notes');
        $data['notes'] = $this->Get_notes->get_mm();
        $this->load->view('show', $data);
    }

    public function insert()
    {
        $title = 'Something';
        $text = 'Something else';

        $data = [
            'title' => $title,
            'text' => $text
        ];

        $this->Get_notes->add_notes($data);
    }
}

4 个答案:

答案 0 :(得分:1)

您编写它的方式,Get_notes模型仅在index()函数中可用。

要使Get_notes模型适用于单个控制器中的所有功能,请将其加载到Controller's constructor function ...

class Notes extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('get_notes'); // available to all functions within Notes 
    }
    ....

要使Get_notes模型全局可用于任何CI控制器中的所有功能,请将其放在位于$autoload['model']的{​​{1}}文件中的autoload.php数组中...

application/config/autoload.php

→请注意,无论您以后如何引用它,都应该用全部小写编写。

$autoload['model'] = array('get_notes'); // available to all functions in your CI application

见:

  

如果您打算在任何控制器中使用构造函数,则必须在其中放置以下代码行:

     

$this->load->model('get_notes'); $this->get_notes->add_notes($data);

  

parent::__construct(); // Notice there is no dollar sign是您班级的名称。类名必须首字母大写,其余名称小写。确保您的类扩展了基础Model类。

  

通常会在控制器方法中加载和调用模型。要加载模型,您将使用以下方法:

     

Model_name

     

加载后,您将使用与您的类同名的对象访问您的模型方法:

     

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

  

要自动加载资源,请打开$this->model_name->method();文件,然后将要加载的项目添加到自动加载阵列中。您将在该文件中找到与每种类型的项目相对应的说明。

答案 1 :(得分:0)

codeigniter模型调用区分大小写,因此需要使用

的模型
$this->get_notes->a_function_inside_the_model ();

另请注意,模型文件夹中的名称应始终以大写字母开头。

每当我们在像wamp服务器这样的localhost服务器上运行codeigniter时,这些问题都不存在,但是在实时服务器上它们会存在。

希望这是有帮助的

答案 2 :(得分:-1)

您的get_notes模型仅在索引函数中加载。您无法在索引函数中加载模型并在任何其他函数中使用它而无需再次加载它。 我在想你正在尝试加载模型一次并在整个控制器中使用它。为此,您必须在__construct方法中加载它。您的代码应与此类似:

<?php

class Notes extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('Get_notes');
    }

    public function index()
    {
        $data['notes'] = $this->Get_notes->get_mm();
        $this->load->view('show', $data);
    }

    public function insert()
    {
        $title = 'Something';
        $text = 'Something else';

        $data = [
            'title' => $title,
            'text' => $text
        ];

        $this->Get_notes->add_notes($data);
    }
}

答案 3 :(得分:-1)

把$ this-&gt;加载 - &gt;模型(&#39; Get_notes&#39;);在insert()函数中。

如果要全局使用它,请将其放在构造函数中。