亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
歡迎 目錄 快速參考圖 基本信息 服務(wù)器要求 許可協(xié)議 變更記錄 關(guān)于CodeIgniter 安裝 下載 CodeIgniter 安裝指導(dǎo) 從老版本升級(jí) 疑難解答 介紹 開始 CodeIgniter 是什么? CodeIgniter 速記表 支持特性 應(yīng)用程序流程圖 模型-視圖-控制器 架構(gòu)目標(biāo) 教程 內(nèi)容提要 加載靜態(tài)內(nèi)容 創(chuàng)建新聞條目 讀取新聞條目 結(jié)束語 常規(guī)主題 CodeIgniter URL 控制器 保留字 視圖 模型 輔助函數(shù) 使用 CodeIgniter 類庫 創(chuàng)建你自己的類庫 使用 CodeIgniter 適配器 創(chuàng)建適配器 創(chuàng)建核心系統(tǒng)類 鉤子 - 擴(kuò)展框架的核心 自動(dòng)裝載資源 公共函數(shù) URI 路由 錯(cuò)誤處理 緩存 調(diào)試應(yīng)用程序 以CLI方式運(yùn)行 管理應(yīng)用程序 處理多環(huán)境 PHP替代語法 安全 開發(fā)規(guī)范 類庫參考 基準(zhǔn)測(cè)試類 日歷類 購物車類 配置類 Email 類 加密類 文件上傳類 表單驗(yàn)證詳解 FTP 類 圖像處理類 輸入類 Javascript 類 語言類 裝載類 遷移類 輸出類 分頁類 模板解析器類 安全類 Session 類 HTML 表格類 引用通告類 排版類 單元測(cè)試類 URI 類 User-Agent 類 表單驗(yàn)證 XML-RPC 和 XML-RPC 服務(wù)器 Zip 編碼類 緩存適配器 適配器參考 適配器 數(shù)據(jù)庫類 Active Record 類 數(shù)據(jù)庫緩存類 自定義函數(shù)調(diào)用 數(shù)據(jù)庫配置 連接你的數(shù)據(jù)庫 數(shù)據(jù)庫快速入門例子代碼 字段數(shù)據(jù) 數(shù)據(jù)庫維護(hù)類 查詢輔助函數(shù) 數(shù)據(jù)庫類 查詢 生成查詢記錄集 表數(shù)據(jù) 事務(wù) 數(shù)據(jù)庫工具類 JavaScript類 輔助函數(shù)參考 數(shù)組輔助函數(shù) CAPTCHA 輔助函數(shù) Cookie Helper 日期輔助函數(shù) 目錄輔助函數(shù) 下載輔助函數(shù) Email 輔助函數(shù) 文件輔助函數(shù) 表單輔助函數(shù) HTML輔助函數(shù) Inflector 輔助函數(shù) 語言輔助函數(shù) 數(shù)字輔助函數(shù) 路徑輔助函數(shù) 安全輔助函數(shù) 表情輔助函數(shù) 字符串輔助函數(shù) 文本輔助函數(shù) 排版輔助函數(shù) URL 輔助函數(shù) XML 輔助函數(shù)
characters

CodeIgniter 用戶指南 版本 2.1.0

編輯文檔、查看近期更改請(qǐng) 登錄 或 注冊(cè)  找回密碼
查看原文

模型

模型對(duì)于那些想用傳統(tǒng)MVC方式的人來說是可選的。

  • 什么是模型?
  • 剖析模型
  • 載入模型
  • 自動(dòng)載入模型
  • 連接數(shù)據(jù)庫

什么是模型?

模型是專門用來和數(shù)據(jù)庫打交道的PHP類。例如,假設(shè)你想用CodeIgniter來做一個(gè)Blog。你可以寫一個(gè)模型類,里面包含插入、更新、刪除Blog數(shù)據(jù)的方法。下面的例子將向你展示一個(gè)普通的模型類:

class?Blogmodel?extends?CI_Model?{

????var $title?? = '';
????var $content = '';
????var $date??? = '';

????function?__construct()
????{
????????parent::__construct();
????}
????
????function?get_last_ten_entries()
????{
????????$query = $this->db->get('entries', 10);
????????return $query->result();
????}

????function?insert_entry()
????{
????????$this->title?? = $_POST['title']; // 請(qǐng)閱讀下方的備注
????????$this->content = $_POST['content'];
????????$this->date??? = time();

????????$this->db->insert('entries',?$this);
????}

????function?update_entry()
????{
????????$this->title?? = $_POST['title'];
????????$this->content = $_POST['content'];
????????$this->date??? = time();

????????$this->db->update('entries',?$this, array('id' => $_POST['id']));
????}

}

注意: 上面用到的函數(shù)是 Active Record 數(shù)據(jù)庫函數(shù).

備注: 為了簡(jiǎn)單一點(diǎn),我們直接使用了$_POST。不過,這不太好,平時(shí)我們應(yīng)該使用 輸入類:$this->input->post('title')

剖析模型

模型類文件存放在 application/models/ 文件夾。 如果你愿意,可以在里面建立子文件夾。

最基本的模型類必須像這樣:

class?Model_name?extends?CI_Model?{

????function?__construct()
????{
????????parent::__construct();
????}
}

Model_name 是模型類的名字。 類名的首字母必須大寫,其他字母小寫。 并且確保你的類繼承了基本模型類(Base Model Class)。

文件名應(yīng)該是模型類名的小寫版。比如,如果你的類是:

class?User_model?extends?CI_Model?{

????function?__construct()
????{
????????parent::__construct();
????}
}

類的文件名應(yīng)該是:

application/models/user_model.php

載入模型

模型可以在 控制器 中被引用。 就像這樣:

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

如果模型文件在子文件夾下,引用的時(shí)候要帶上相對(duì)路徑名。例如:如果你有一個(gè)模型 application/models/blog/queries.php。 下面的代碼可以引用它:

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

模型一旦被載入,你就能通過下面的方法使用它:

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

$this->Model_name->function();

在默認(rèn)的情況下模型名稱就直接被引入作為對(duì)象名,就如上面所示。當(dāng)然,如果你愿意,可以起個(gè)更好記的對(duì)象名!那么,可以在加載模型函數(shù)中指定第二個(gè)參數(shù)來設(shè)定,例如:

$this->load->model('Model_name', 'fubar');

$this->fubar->function();

這里有個(gè)控制器的例子,加載一個(gè)模型,然后通過視圖顯示出來

class?Blog_controller?extends?CI_Controller?{

????function?blog()
????{
????????$this->load->model('Blog');

????????$data['query'] = $this->Blog->get_last_ten_entries();

????????$this->load->view('blog', $data);
????}
}

自動(dòng)載入模型

如果您需要一個(gè)在整個(gè)項(xiàng)目中都起作用的特定模型,您可以讓 CodeIgniter 在初始化時(shí)自動(dòng)裝載它。實(shí)現(xiàn)的方法是打開 application/config/autoload.php 文件,然后在自動(dòng)裝載數(shù)組中添加上這個(gè)模型。

備注: 經(jīng)過測(cè)試(以加載一個(gè)模型為例)自動(dòng)加載模型和手動(dòng)載入模型時(shí),消耗的內(nèi)存情況是一樣的!但是當(dāng)加載模型越多消耗內(nèi)存就會(huì)越大。自動(dòng)加載模型是要犧牲內(nèi)存消耗換取的,所以盡量不要自動(dòng)加載不必要貫穿全站項(xiàng)目的模型!

連接到數(shù)據(jù)庫

當(dāng)一個(gè)模型被載入時(shí),它并不會(huì)自動(dòng)連接數(shù)據(jù)庫。以下方法可以使您連接數(shù)據(jù)庫:

  • 您可以使用標(biāo)準(zhǔn)方法來連接數(shù)據(jù)庫(說明), 也可以通過控制器或者您的自定義模型。
  • 您可以把第三個(gè)參數(shù)設(shè)置為TRUE來使模型裝載函數(shù)自動(dòng)連接數(shù)據(jù)庫,連接配置可以在您的數(shù)據(jù)庫配置文件中可以定義:
  • $this->load->model('Model_name', '', TRUE);
  • 您可以手動(dòng)設(shè)定第三個(gè)參數(shù)來載入您的自定義數(shù)據(jù)庫配置: $config['hostname'] = "localhost";
    $config['username'] = "myusername";
    $config['password'] = "mypassword";
    $config['database'] = "mydatabase";
    $config['dbdriver'] = "mysql";
    $config['dbprefix'] = "";
    $config['pconnect'] = FALSE;
    $config['db_debug'] = TRUE;

    $this->load->model('Model_name', '', $config);
  • 備注: 經(jīng)過友好鏈接測(cè)試(也即只連接數(shù)據(jù)庫不涉及查詢),自動(dòng)連接數(shù)據(jù)庫和手動(dòng)連接數(shù)據(jù)庫時(shí),消耗的內(nèi)存情況是一樣的,我本人的本機(jī)測(cè)試是0.67M

?

翻譯貢獻(xiàn)者: analyzer, Hex, levin, li_star, longbill, ripen, shishirui, soyota
最后修改: 2012-03-07 14:15:16
Previous article: Next article: