CodeIgniter没有加载模型

时间:2013-07-04 23:20:30

标签: php codeigniter

在我的控制器(controllers / user.php)中,我有:

class User extends CI_Controller 
{
    public function index() 
    {       
         $this->load->model('user_model')or die("error");  
    }
}

在我的模型(models / user_model.php)中,我有

class User_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->helper('common');
    }
}

如果我删除

or die("error");

从load语句中,我得到500个内部服务器错误。

我检查了config.php,这里有一些信息

$config['base_url'] = ''; 
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

我还编辑了.htaccess文件,从URL中删除“index.php”以使其更清晰。

RewriteEngine On
RewriteCond $1 !^(index.php|images|captcha|css|js|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

5 个答案:

答案 0 :(得分:3)

据说这是在__construct(构造函数)中加载模型,库的最佳实践

class User extends CI_Controller 
{
    public function __construct() 
    {       
         parent:: __construct();
         $this->load->model('user_model');  
    }

}

请尝试将控制器名称“用户”更改为“用户”(没错,但如果不能正常工作则尝试使用)。命名冲突可能是。

答案 1 :(得分:0)

class User extends CI_Controller 
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->helper('common');
        $this->load->model('user_model');
    }    

    public function index() 
    {       

    }
}

答案 2 :(得分:0)

不要在模型中使用contruct方法,而是遵循以下规则:

# in the User controller
class User extends CI_Controller{
    public function __construct(){
        parent::__construct();
        $this->load->database();
        $this->load->helper('common');
        $this->load->model('user_model');
    }

    public function index()
    {       
         //$this->load->model('user_model')or die("error");
         #now you can use the user_model here 
    }
}

如果只需要为特定函数加载模型,则只在该函数中加载模型而不是构造函数。在构造函数中加载模型使模型函数可用于所有控制器函数。

答案 3 :(得分:0)

还值得注意的是,当您加载模型时,它不会自动连接到数据库,但如果您将TRUE作为第三个参数传递,那么它将

class User extends CI_Controller 
{
    public function __construct() 
    {       
         parent:: __construct();
         $this->load->model('user_model', '', TRUE);  
    }
}

如果你知道你将要加载很多模型,你也可以在application / config / autoload.php文件中自动加载它

答案 4 :(得分:-1)

检查你的文件名。它们是扩展名.php ??我自己遇到了这个问题,结果发现我忘了添加.php扩展名