Trong CodeIgniter 3, Model là thành phần chịu trách nhiệm xử lý dữ liệu và tương tác với cơ sở dữ liệu. Mô hình Model giúp bạn quản lý dữ liệu một cách hiệu quả, tách biệt logic xử lý dữ liệu khỏi phần hiển thị của ứng dụng, tuân thủ mô hình MVC (Model-View-Controller).
Dưới đây là hướng dẫn chi tiết về cách tạo và sử dụng Model trong CodeIgniter 3:
1. Tạo Model Mới
- Tạo file Model:
- Các Model được đặt trong thư mục
application/models
.
- Tạo một file PHP mới với tên file kết thúc bằng
.php
. Ví dụ: Post_model.php
.
- Khai báo lớp Model:
- Tên lớp Model nên viết hoa chữ cái đầu và trùng với tên file. Ví dụ, file
Post_model.php
sẽ có lớp Post_model
.
- Model phải kế thừa từ lớp
CI_Model
.
Ví dụ về một Model cơ bản:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Post_model extends CI_Model {
public function __construct() {
// Gọi hàm khởi tạo của lớp CI_Model
parent::__construct();
}
// Phương thức để lấy tất cả các bài viết
public function get_all_posts() {
// Sử dụng Query Builder của CodeIgniter để lấy dữ liệu
$query = $this->db->get('posts');
return $query->result_array();
}
}
2. Nạp và Sử dụng Model trong Controller
Để sử dụng Model trong Controller, bạn cần nạp Model đó và gọi các phương thức của nó.
Ví dụ:
Trong Controller Blog.php
:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Post_model extends CI_Model {
public function __construct() {
// Gọi hàm khởi tạo của lớp CI_Model
parent::__construct();
}
// Phương thức để lấy tất cả các bài viết
public function get_all_posts() {
// Sử dụng Query Builder của CodeIgniter để lấy dữ liệu
$query = $this->db->get('posts');
return $query->result_array();
}
}
3. Các Phương thức Thông dụng trong Model
Model thường chứa các phương thức để thực hiện các thao tác như lấy dữ liệu, chèn dữ liệu, cập nhật, và xóa dữ liệu trong cơ sở dữ liệu.
Ví dụ về các phương thức trong Model:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Post_model extends CI_Model {
public function __construct() {
parent::__construct();
}
// Lấy tất cả bài viết
public function get_all_posts() {
$query = $this->db->get('posts');
return $query->result_array();
}
// Lấy một bài viết theo ID
public function get_post($id) {
$query = $this->db->get_where('posts', array('id' => $id));
return $query->row_array();
}
// Thêm bài viết mới
public function insert_post($data) {
return $this->db->insert('posts', $data);
}
// Cập nhật bài viết theo ID
public function update_post($id, $data) {
$this->db->where('id', $id);
return $this->db->update('posts', $data);
}
// Xóa bài viết theo ID
public function delete_post($id) {
$this->db->where('id', $id);
return $this->db->delete('posts');
}
}
4. Sử dụng Query Builder trong CodeIgniter
CodeIgniter cung cấp Query Builder, một cách tiếp cận đơn giản để xây dựng các câu truy vấn SQL một cách an toàn và hiệu quả.
Một số phương thức phổ biến của Query Builder:
Chọn dữ liệu (SELECT
):
$query = $this->db->get('posts'); // SELECT * FROM posts
Chọn dữ liệu có điều kiện (WHERE
):
$query = $this->db->get_where('posts', array('status' => 'active')); // SELECT * FROM posts WHERE status = 'active'
Chèn dữ liệu (INSERT
):
$data = array('title' => 'Bài viết mới', 'content' => 'Nội dung bài viết');
$this->db->insert('posts', $data);
Cập nhật dữ liệu (UPDATE
):
$data = array('title' => 'Cập nhật tiêu đề');
$this->db->where('id', 1);
$this->db->update('posts', $data);
Xóa dữ liệu (DELETE
):
$this->db->where('id', 1);
$this->db->delete('posts');
5. Bảo mật Dữ liệu
Khi làm việc với dữ liệu, đặc biệt là dữ liệu đầu vào từ người dùng, luôn phải bảo mật để tránh SQL Injection và các cuộc tấn công khác.
- Sử dụng Query Builder: CodeIgniter tự động thoát các chuỗi và xử lý dữ liệu an toàn khi sử dụng Query Builder.
- Sử dụng phương thức
$this->db->escape()
khi cần thoát dữ liệu thủ công.
6. Tương tác với Cơ sở Dữ liệu Phức Tạp
Bạn có thể thực hiện các truy vấn SQL phức tạp bằng cách sử dụng phương thức query()
:
$query = $this->db->query('SELECT * FROM posts WHERE status = ?', array('active'));
return $query->result_array();
7. Tối ưu hóa Model
- Sử dụng Cache: CodeIgniter hỗ trợ caching để cải thiện hiệu suất. Bạn có thể sử dụng caching để lưu các kết quả truy vấn phổ biến.
- Tách logic xử lý: Hãy giữ cho Model của bạn nhẹ nhàng bằng cách tách logic xử lý phức tạp ra các phương thức riêng biệt hoặc sử dụng các thư viện bổ trợ.
Kết luận
Model trong CodeIgniter 3 giúp bạn quản lý và tương tác với cơ sở dữ liệu một cách hiệu quả và an toàn. Hiểu rõ cách sử dụng Model và các tính năng liên quan sẽ giúp bạn xây dựng ứng dụng mạnh mẽ và linh hoạt hơn. Nếu có thêm câu hỏi hoặc cần hỗ trợ thêm về Model, bạn đừng ngần ngại hỏi nhé!