Vậy Model trong CodeIgniter là gì và Model dùng để làm gì?
Model là tầng xử lý trung gian, nó nhận yêu cầu của các Controller và tương tác với cơ sở dữ liệu để trả về kết quả dưới dạng mảng dữ liệu. Tiếp đó chúng ta sẽ lấy các dữ liệu đó ra và đem hiển thị ở View.
Cấu hình kết nối với cơ sở dữ liệu
Vào file database.php theo đường dẫn application/config. Ta điều chỉnh các nội dungn
$db['default']['hostname'] = 'hosting';
$db['default']['username'] = 'user';
$db['default']['password'] = 'pass';
$db['default']['database'] = 'dbName';
Trong đó:
- hosting : là hosting website của bạn.
- user : là tên đăng nhập vào cơ sở dữ liệu.
- pass: là mật khẩu đăng nhập vào cơ sở dữ liệu.
- dbName: là tên cơ sở dữ liệu.
Sau khi đã thiết lập kết nối như trên thì khi nào cần sử dụng đến cơ sở dữ liệu chúng ta chỉ việc sử dụng cú pháp
$this->load->database();
Để hiểu rõ hơn vấn đề, chúng ta đi làm một ví dụ như sau:
In ra tất cả các thông tin của một bảng bất kỳ trong cơ sở dữ liệu. Giả sử trong trường hợp của tôi thì tôi có cơ sở dữ liệu “mydb” và trong đó có bảng khach_hang với 3 trường dữ liệu lần lượt là idCustomer, name, phone.
Bây giờ chúng ta sẽ đi xây dựng một hàm có chức năng lấy toàn bộ thông tin của bảng khach_hang. Trong thư mục models tạo mới một file có tên là mcustomer với nội dung như sau:
<?phpTrong thư mục controllers tạo mới một file có tên customer.php nội dung như sau :
Class Mcustomer extends CI_Model{
function __construct(){
parent::__construct();
$this->load->database();
}
function get_all(){
$query = $this->db->get("khach_hang");
return $query->result_array();
}
}
?>
<?phpTrên thanh địa chỉ của trình duyệt ta truy cập tới: http://localhost/democi/index.php/customer/show để kiểm tra kết quả.
Class Customer extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model('Mcustomer');
}
function show(){
$data = $this->Mcustomer->get_all();
print_r($data);
}
}
?>
Đến bước này chắc có nhiều thắc mắc trong đầu các bạn. Chúng ta sẽ lần lượt phân tích ví dụ trên
Trong file mcustomer.php trong model
- Đặt tên class tương tự như đặt tên class trong Controller, đó là tên class giống với tên file và phải viết hoa chữ cái đầu tiên.
- Hàm __construct() là hàm khởi tạo, có chức năng thực thi toàn bộ nội dung trong nó mà không cần phải gọi đến hàm.
- Câu lệnh $this->db->get(“khach_hang”) là câu lệnh lấy ra toàn bộ thông tin trong bản khach_hang. Tương đương với câu lệnh truy vấn “SELECT * FROM khach_hang” trong SQL.
- Câu lệnh $query->result_array() là câu lệnh lấy dữ liệu trả về từ câu truy vấn dưới dạng mảng.
Trong file customer.php trong model
- Câu lệnh $this->load->model(“Mcustomer”) là câu lệnh dùng để load model có tên là Mcustomer.
- Chúng ta gọi đến một chức năng trong model theo cú pháp $this->tên_model->tên_hàm, như ở trên ta có $this->Mcustomer->get_all().
Như vậy các bạn đã nắm được quá trình làm việc với Model, từ đó sẽ phát triển hoc php lên và tùy thuộc vào mục đích, chức năng mà bạn muốn xây dựng.
Một số phương thức tương tác cơ sở dữ liệu trên model trong CodeIgniter Framework
1. Lựa chọn trường dữ liệu
$this->db->select("trường_dữ_liệu_1", "trường_dữ_liệu_1", ....);
2. Điều kiện truy vấn
$this->db->where("trường_dữ_liệu","giá_trị");
3. Câu lệnh sắp xếp
$this->db->order_by("trường_sắp_xếp ASC | DESC");
4. Lấy tất cả bản ghi từ truy vấn
$query->result_array();
5. Lấy một bản ghi từ truy vấn
$query->row_array();
6. Đếm số dòng trả về từ truy vấn
$query->num_rows();
7. Thêm dữ liệu
$this->db->insert("tên_bảng","mảng_dữ_liệu");
8. Sửa dữ liệu
$this->db->update("tên_bảng","mảng_dữ_liệu");
9. Xóa dữ liệu
$this->db->delete("tên_bảng");
0 nhận xét:
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.