模型的加載

什麼是模型?
模型是專門和數據庫打交道的PHP類。 假設你使用 CodeIgniter 管理一個博客,那麼你應該會有一個用於插入、更新以及獲取博客數據的模型類。 這裏是一個模型類的例子:php

class Blog_model extends CI_Model {

    public $title;
    public $content;
    public $date;

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

}

註解html

註解:爲了保證簡單,咱們在這個例子中直接使用了 $_POST 數據,這實際上是個很差的實踐, 一個更通用的作法是使用 輸入庫  $this->input->post('title')數據庫

剖析模型

模型類位於你的 application/models/ 目錄下,若是你願意,也能夠在裏面建立子目錄。app

 

模型類的基本原型以下:ide

class Model_name extends CI_Model {

    public function __construct()
    {
        parent::__construct();
        // Your own constructor code
    }

}

其中,Model_name 是類的名字,類名的第一個字母 必須 大寫,其他部分小寫。確保你的類 繼承 CI_Model 基類。codeigniter

文件名和類名應該一致,例如,若是你的類是這樣:post

class User_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
        // Your own constructor code
    }

}

那麼你的文件名應該是這樣:ui

application/models/User_model.php

加載模型

你的模型通常會在你的 控制器 的方法中加載並調用, 你能夠使用下面的方法來加載模型:this

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

若是你的模型位於一個子目錄下,那麼加載時要帶上你的模型所在目錄的相對路徑, 例如,若是你的模型位於 application/models/blog/Queries.php , 你能夠這樣加載它:spa

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

加載以後,你就能夠經過一個和你的類同名的對象訪問模型中的方法。

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

$this->model_name->method();

若是你想將你的模型對象賦值給一個不一樣名字的對象,你能夠使用 $this->load->model() 方法的第二個參數:

$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);
    }
}
相關文章
相關標籤/搜索