2017-05-21 38 views
1

這是我的控制器:我的模型並沒有在控制器加載笨

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

+0

請記住,我們只使用模型來做數據庫操作, – Ukasyah

+0

@Ukasyah - 事實並非如此。您可以將模型用於任何數據處理情況(如從xml或json中檢索數據)。 – shaggy

回答

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'); 

如果您的模型位於子目錄中,請在模型目錄中包含相對路徑。例如,如果您有位於應用程序/模型/博客的模型/ Queries.php你會使用加載:

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

加載後,你會使用對象具有相同名稱的訪問你的模型方法類:

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

$this->foobar->method(); 

TIP無關問:

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

$this->model_name->method(); 

如果你想你的模型分配給不同的對象名稱,你可以通過加載方法的第二個參數指定它問題:避免在構建時調用所有基本的幫助器,將其放在自動載入中。

+0

我已經將此模型稱爲$ this-> load-> model - >('User_model') –

+3

注意$ this-> model-> insert_item();它是$ this-> user_model-> insert_item()! – calexandre

+0

並且避免調用所有構造的基本幫助器,把它放在自動加載 – calexandre

0

application/config/autoload.php add

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

打開autoload.php文件正在使用不正確的語法。下面是文檔:https://www.codeigniter.com/userguide3/general/models.html

這是正確的方法來調用模型函數:

$this->User_model->insert_item(); 

當您使用此$this->load->model('User_model');語句來加載模型,笨自動創建與該名成員變量。所以,你可以使用該成員變量來調用模型函數。