Thời gian đọc: 5 phút
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:
application/models
..php
. Ví dụ: Post_model.php
.Post_model.php
sẽ có lớp Post_model
.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();
}
}
Để 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();
}
}
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');
}
}
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');
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.
$this->db->escape()
khi cần thoát dữ liệu thủ công.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();
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é!