什麼是模型?
模型是專門和數據庫打交道的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); } }