CodeIgnitor: Model

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên

Model là 1 lớp PHP được thiết kế để tương tác với cơ sở dữ liệu của bạn. Chẳng hạn như bạn viết một trang blog sử dụng CI thì thường bạn sẽ có các thao tác với cơ sở dữ liệu như select, insert, delete, update. Và tất nhiên, vai trò của model là để thực hiện những công việc này.

Chúng ta xét 1 ví dụ dưới đây:

class Blogmodel extends CI_Model {

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

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

    function insert_entry()
    {
        $this->title   = $_POST['title']; // please read the below note
        $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']));
    }

}

Với vị dụ trên, model Blogmodel đã định nghĩa ra các phương thức như get_last_ten_entries(), insert_entry() hay update_entry(). Tất cả các phương thức này đều tương tác với cơ sở dữ liệu để lấy dữ liệu lên hay thêm mới, chỉnh sửa dữ liệu.

Một model (hay còn gọi class model) được tạo và đặt trong thư mục application/models. Và 1 điều lưu ý, tên file phải trùng với tên của class model nhưng viết thường (giống với controller). Với ví dụ trên thì ta sẽ có file application/models/blogmodel.php. Ngoài ra 1 class model luôn luôn extends CI_Model. Một class model có nội dung tương tự như sau:

class Model_name extends CI_Model {

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

Để sử dụng 1 model, trước tiên bạn phải load model đó. Ví dụ để sử dụng blogmodel ở trên, bạn sẽ phải load blogmodel trước khi sử dụng các phương thức như get_last_ten_entries(), insert_entry() hay update_entry() với cú pháp sau:

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

Chúng ta xét lại controller blog ở phần trước, các bạn muốn sử dụng blogmodel cho controller blog thì controller blog sẽ có nội dung như sau:

class Blog extends CI_Controller {

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

    function index()
    {
        $this->load->model('Blogmodel');

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

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

Trong ví dụn trên, ngoài cú pháp load blogmodel thì bạn còn cần phải chú ý tới câu lệnh sau:

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

Đây là câu lệnh gọi tới phương thức get_last_ten_entries() và gán cho $data['query']. Như vậy để gọi tới các phương thức được định nghĩa trong một model, CI đã thiết kế 1 cách gọi như sau:

$this->model_name->method();

Bạn chú ý: model_name là tên của model và phải viết thườngmethod() là một phương thức trong class model. Đây cũng là cách sử dụng chung cho các thư viện của CI.

Để làm việc với model, các bạn còn phải tìm hiểu thêm về thư viện Database và tôi sẽ đề cập sau. Thư viện Database định nghĩa sẵn các phương thức tương tác an toàn với cơ sở dữ liệu và có lẽ đây là một thư viện chứa nhiều phương thức nhất của CI.

» Tiếp: Helper
« Trước: View
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Copied !!!