我的模型没有加载到codeigniter中的控制器中

时间:2017-05-21 13:12:51

标签: php jquery html css codeigniter

这是我的控制者:

defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('User_model');
$this->load->helper(array('form','text','url','array'));
$this->load->library(array('Form_validation','email','session'));
}

public function index()
{

$this->model->insert_item();
$this->load->view('welcome_message');
}
}

这是我的模特:

defined('BASEPATH') OR exit('No direct script access allowed');
class User_model extends CI_Model {
public function insert_item()
{
echo "hi";
}
}

当我调用模型函数但它没有加载它时显示错误致命错误:在非对象上调用成员函数insert_item()

3 个答案:

答案 0 :(得分:4)

您需要将$ this-> user_model,that's the CI pattern称为已安装的对象:

defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('user_model');
$this->load->helper(array('form','text','url','array'));
$this->load->library(array('Form_validation','email','session'));
}

public function index()
{

$this->user_model->insert_item();
$this->load->view('welcome_message');
}
}

Loading a Model

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

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

如果您的模型位于子目录中,请包含models目录中的相对路径。例如,如果您有一个位于application / models / blog / Queries.php的模型,您将使用以下命令加载它:

$this->load->model('blog/queries');

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

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

$this->model_name->method();

如果您希望将模型分配给不同的对象名称,可以通过加载方法的第二个参数指定它:

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

$this->foobar->method();

提示与问题无关:避免在构造上调用所有基本助手,将其置于自动加载。

答案 1 :(得分:0)

中打开autoload.php文件
  

应用/配置/ autoload.php   添加

$autoload['model'] = array('user_model');

答案 2 :(得分:0)

您使用的语法不正确。以下是文档:https://www.codeigniter.com/userguide3/general/models.html

这是调用模型函数的正确方法:

$this->User_model->insert_item();

使用此$this->load->model('User_model');语句加载模型时,CodeIgniter会自动使用该名称创建成员变量。因此,您可以使用该成员变量来调用模型函数。