Controller
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Test extends CI_Controller {
function __construct() {
parent :: __construct();
$this->load->model('Main_data');
}
public function my_profile() {
$data['user_id'] = $this->session->userdata('user_id');
$ids = $data['user_id'][0]['user_id'];
$data['user_project'] = $this->Main_data->user_pro($ids);
$this->load->view('user/my-profile',$data);
}
}
型号: Main_data
<?php
class Main_data extends CI_Model {
function __construct() {
parent::__construct();
}
public function user_pro($ids) {
$this->db->select('*');
$this->db->from('user_project');
$this->db->where('user_id',$ids);
$query = $this->db->get();
$result = $query->result_array();
return $result;
}
}
在此代码中,我有控制器Test
,其中我加载了模型Main_data
和函数my_profile
。现在,当我运行我的程序时,它会生成一个错误,如下所述:
Fatal error: Call to undefined method Main_data::user_pro()
我不知道我哪里做错了?那么,如何修复此错误?
第一件事 使用小写字母加载模型,即使您使用大写字母命名它们$this->load->model('main_data');
对于控制器,在定义类后立即创建一个全局变量public $data
。 您可以使用$this->name
在类中调用此变量(在本例中为$this->data
(。
在construct()
中,加载模型后,进行如下调用:
$this->data = $this->my_model->function_i_want_to_call(parameters);
它将加载您的全局$data
,其中包含您希望从模型中的函数提供的信息
并为您的控制器制作这样的函数
public function index() {
$this->load->view('location_of_view',$this->data);
}
我已经尝试了您的代码,并且通过这些修改,它按预期工作。 这是我用于代码点火器的样式,也许您不会喜欢它,但如果您想:),请尝试一下。 我希望这有帮助!有好的一天!