在Codeigniter 3.0.3中加载模型

时间:2016-12-22 16:35:41

标签: php codeigniter codeigniter-classloader

我在控制器文件夹中有一个这个结构的项目:

  • places.php
  • users.php
  • items.php
  • ...

在我的模特文件夹中:

  1. Place.php(里面的名称是Place extends ActiveRecord \ Model)
  2. user.php的
  3. ...
  4. 在我的控制器places.php内部,如果我想加载模型,我必须这样做:

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

    之后我必须这样调用我的方法:

    $this->place->get_all_places();
    

    这是在我的本地主机上工作但不在我的服务器中我在服务器中查看我的php版本,它是5.6。

    我如何解决这个问题?

    这是我的模型文件 Place.php

        class Place extends ActiveRecord\Model
        {
            static $table_name = 'places';
            static $has_many = array(
            );
    
    
            public function get_all_places()
            { 
                return true;
            }
    }
    

    这是我的控制器文件 places.php

        <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
        class Places extends MY_Controller {
    
            function __construct()
            {
                parent::__construct();
    
                if($this->user){
                    $access = TRUE;
    
                }else{
                    redirect('login');
                }
    
            }   
            function index()
            {
                $this->content_view = 'places/all';
            }
    
            function get_places(){
    
                $this->theme_view = '';
    
                $this->load->model('Place');
                $this->place->get_all_places();
            }
    }
    

    错误就是:

    Unable to locate the model you have specified: place
    

2 个答案:

答案 0 :(得分:3)

您的模型文件名应为

Places_model.php

和内部模型

class Places_Model extends CI_Model # Changed 
{
    static $table_name = 'places';
    static $has_many = array();


    public function get_all_places()
    { 
        return true;
    }

}

Models in Codeigniter

答案 1 :(得分:0)

我认为每件事情都是对的。但问题是由于这条线......

class Place extends ActiveRecord\Model

如果你定义了一个扩展CI_Model的新模型。然后新模型的名称不能像ActiveRecord\Model那样。名称可能是ActiveRecordModel。所以你可以找到一个解决方案如果您在ActiveRecordModel文件夹中定义名为application/core的新模型,则将...替换为如下所示。

class Place extends ActiveRecordModel

如果您没有定义任何新模型,则可以采用另一种解决方案。然后将上面的行替换为

 class Place extends CI_Model