【问题标题】:my model does not load in the controller in codeigniter我的模型没有加载到 codeigniter 的控制器中
【发布时间】:2017-10-21 04:36:47
【问题描述】:

这是我的控制器:

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()

【问题讨论】:

  • 记住,我们只使用模型来做数据库操作,
  • @Ukasyah - 这不是真的。您可以将模型用于任何数据处理情况(例如从 xml 或 json 检索数据)。

标签: php jquery html css codeigniter


【解决方案1】:

你需要调用 $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');

如果您的模型位于子目录中,请包含模型目录中的相对路径。例如,如果您有一个位于 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();

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

【讨论】:

  • 注意$this->model->insert_item();它是 $this->user_model->insert_item() !!
  • 并避免在构造上调用所有基本助手,将其置于自动加载状态
【解决方案2】:

打开你的 autoload.php 文件

应用程序/配置/autoload.php 添加

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

【讨论】:

    【解决方案3】:

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

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

    $this->User_model->insert_item();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多