W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
模型對于那些想使用更傳統(tǒng)的 MVC 模式的人來說是可選的。
目錄
模型是專門用來和數(shù)據(jù)庫打交道的 PHP 類。例如,假設你使用 CodeIgniter 管理一個博客,那么你應該會有一個用于插入、更新以及獲取博客數(shù)據(jù)的模型類。 這里是一個模型類的例子:
class Blog_model extends CI_Model {
public $title;
public $content;
public $date;
public function __construct()
{
// Call the CI_Model constructor
parent::__construct();
}
public function get_last_ten_entries()
{
$query = $this->db->get('entries', 10);
return $query->result();
}
public function insert_entry()
{
$this->title = $_POST['title']; // please read the below note
$this->content = $_POST['content'];
$this->date = time();
$this->db->insert('entries', $this);
}
public function update_entry()
{
$this->title = $_POST['title'];
$this->content = $_POST['content'];
$this->date = time();
$this->db->update('entries', $this, array('id' => $_POST['id']));
}
}
注解
上面的例子中使用了 查詢構造器 數(shù)據(jù)庫方法。注解
為了保證簡單,我們在這個例子中直接使用了 $_POST 數(shù)據(jù),這其實是個不好的實踐, 一個更通用的做法是使用 輸入庫 的$this->input->post('title')。
模型類位于你的 application/models/ 目錄下,如果你愿意,也可以在里面創(chuàng)建子目錄。
模型類的基本原型如下:
class Model_name extends CI_Model {
public function __construct()
{
parent::__construct();
}
}
其中,Model_name 是類的名字,類名的第一個字母 必須 大寫,其余部分小寫。確保你的類 繼承 CI_Model 基類。
文件名和類名應該一致,例如,如果你的類是這樣:
class User_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
}
那么你的文件名應該是這樣:
application/models/User_model.php
你的模型一般會在你的 控制器 的方法中加載并調用, 你可以使用下面的方法來加載模型:
$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() 方法的第二個參數(shù):
$this->load->model('model_name', 'foobar');
$this->foobar->method();
這里是一個例子,該控制器加載一個模型,并處理一個視圖:
class Blog_controller extends CI_Controller {
public function blog()
{
$this->load->model('blog');
$data['query'] = $this->blog->get_last_ten_entries();
$this->load->view('blog', $data);
}
}
如果你發(fā)現(xiàn)你有一個模型需要在整個應用程序中使用,你可以讓 CodeIgniter 在系統(tǒng)初始化時自動加載它。打開 application/config/autoload.php 文件, 并將該模型添加到 autoload 數(shù)組中。
當模型加載之后,它 并不會 自動去連接你的數(shù)據(jù)庫,下面是一些關于 數(shù)據(jù)庫連接的選項:
你可以在控制器或模型中使用 標準的數(shù)據(jù)庫方法 連接數(shù)據(jù)庫。
你可以設置第三個參數(shù)為 TRUE 讓模型在加載時自動連接數(shù)據(jù)庫,會使用你的數(shù)據(jù)庫配置文件中的配置:
$this->load->model('model_name', '', TRUE);
你還可以通過第三個參數(shù)傳一個數(shù)據(jù)庫連接配置:
$config['hostname'] = 'localhost';
$config['username'] = 'myusername';
$config['password'] = 'mypassword';
$config['database'] = 'mydatabase';
$config['dbdriver'] = 'mysqli';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$this->load->model('model_name', '', $config);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: