在CodeIgniter中扩展模型

时间:2015-01-17 15:30:15

标签: php codeigniter

好吧,我是CodeIgniter Framework的新手,我正在尝试构建一个通用的Model Class。参见:

class Basic_Model extends CI_MODEL {

    function __construct() {
        // Call the Model constructor
        parent::__construct();
    }

}

我想基于Basic_Model扩展所有模型,如下所示:

class Pagina_Model extends Basic_Model {

    function __construct() {
        // Call the Model constructor
        parent::__construct();
    }

}

问题是当我尝试从Controller调用“pagina_model”时出现以下错误:

Fatal error: Class 'Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12

如果我在控制器中使用“basic_model”,一切正常。

编辑1:

我在“/ application / core”中创建了一个名为MY_Basic_Model.php的文件,并将类名更改为“MY_Basic_Model”。但我得到了错误:

Fatal error: Class 'MY_Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12

3 个答案:

答案 0 :(得分:5)

为此,您必须创建核心系统类(这也称为方法覆盖)。

MY_Model.php 目录中创建 application/core/ 文件,扩展基础 {{1 }} 类:

CI_Model

现在您可以在模型中扩展它(../ applicaton / models /)

<?php
class MY_Model extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }
}


这里有几点需要注意:
1)类声明必须扩展父类 2)您的新班级名称和文件名必须以 MY _ 为前缀(此项目是可配置的)。


如何配置:
要设置自己的子类前缀,请打开application / config / config.php文件并查找此项:

<?php
class Pagina_Model extends MY_Model {

    function __construct()
    {
        parent::__construct();
    }
}


文档:
https://ellislab.com/codeigniter/user-guide/general/core_classes.html

答案 1 :(得分:4)

你可以这样做。
假设您在模型文件夹中有basic_model.php。 现在添加您编写的class Basic_Model代码

class Basic_Model extends CI_MODEL {

  function __construct() {
    // Call the Model constructor
    parent::__construct();
  }

}

现在在模型文件夹中创建一个pagina_model.php并添加您编写的代码。只需包括像bellow

这样的第一行
<?php
  require APPPATH.'/models/basic_model.php';//just add this line and keep rest 
  class Pagina_Model extends Basic_Model {

      function __construct()
      {
          parent::__construct();
      }
   }

希望这能解决您的问题

答案 2 :(得分:2)

你可以这样做...... MY_模型非常好但是你希望子模型能够扩展你可以随时使用的不同子模型:

require(APPPATH.'models/Other_model.php');
class New_model extends Other_Model {

在我的实例中,Other_Model实际上扩展了MY_model。