[Codeigniter]: Quy trình tương tác cơ sở dữ liệu trong model

Ở bài trước, chúng ta đã tìm hiểu qua về quy trình làm việc trên của . Tiếp tục ở bài này, chúng ta sẽ cùng phân tích và tìm hiểu thêm về quy trình trên như thế nào. Để từ đó vận dụng tốt chúng trong quá trình viết các ứng dụng sau này.

Vậy trước hết, ta tìm hiểu xem ?. Và tại sao phải sử dụng model?. Model là tầng xử lý những tác vụ liên quan đến tương tác từ những yêu cầu của controller. Model xử lý và trả về kết quả dưới dạng một mảng dữ liệu, khi đó thông qua view ta sẽ đẩy nội dung của mảng dữ liệu ấy ra bên ngoài. Việc tách biệt tầng model có rất nhiều thuận lợi, trước là dễ quản lý sau là dễ nâng cấp và phát triển trong tương lai của mã nguồn.

Model trong cũng vậy, cũng có những cách tương tác riêng biệt. Bài viết này sẽ hướng dẫn các bạn những tháo tác chính trong xử lý model như thế nào.

Để có thể tương tác với cơ sở dữ liệu trong codeigniter thì trước hết ta phải cấu hình thông tin kết nối với CSDL tại file database.php trong thư mục application/config.

Chú ý 4 thông tin sau:

Vì tôi đang chạy là xampp, nên phần mật khẩu sẽ là rỗng và tên CSDL của tôi sẽ là qhonline.

Nếu chúng ta đã cấu hình xong trong file database này. Thì bất cứ lúc nào, nếu chúng ta muốn kết nối với CSDL. Chúng ta chỉ việc gọi phương thức:

Kế tới sẽ là tương tác với model, tại thư mục models trong application ta tạo 1 file ví dụ như muser.php. Lưu ý là không được đặt trùng tên với controller. Ví dụ: controller là user.php thì model không được phép là user.php. Vì như thế hệ thống sẽ báo lỗi do không thể hiểu bạn đang muốn gọi controller hay model. Do vậy, trong trường hợp này ta dùng thêm chữ m đứng trước để phân biệt.

Giống với controller, khi tạo lớp Muser thì chứ đầu tiên chúng ta phải viết hoa. Và để không ghi đè lên các construct có sẵn chúng ta phải dùng từ khóa parent để giữ lại các kết quả. Đồng thời, tại đây ta cũng kết nối với cơ sở dữ liệu luôn. Việc này giúp ta dễ dàng thao tác hơn với các phương thức bên dưới.

Tiếp tục ta tạo một phương thức có chức năng liệt kê tất cả record trong bảng user bằng đoạn code sau:

Phương thức listall() được thêm vào. $this->db->get(“user”) là một active record nó tương đương với câu truy vấn thường của chúng ta vậy “select * from user”. Mục đích có active record là để rút gọn lại các câu truy vấn, hỗ trợ người dùng thao tác nhanh hơn và chuyên nghiệp hơn trong quá trình tái sử dụng lại thư viện.

Lệnh result_array() sẽ đem toàn bộ record đưa ra bên ngoài dưới dạng mảng.
Tiếp tục, trong application/controllers ta tạo file user.php với nội dung:

Ta thấy, tại đây có thêm 1 phương thức là index. Với nội dung của nó là nạp model tên Muser bằng phương thức: $this->load->Model(“Muser”). Sau khi nạp xong Model này, ta lại load tiếp phương thức listall() bằng cách sử dụng $this->Muser->listall(). Cuối cùng ta xem cấu trúc mảng của chúng bằng cặp thẻ pre và print_r.

Vậy để nạp 1 model ta có cách nạp như sau:

Sau khi đã nạp xong, ta có cách gọi phương thức trong model như sau:

Một số phương thức tương tác cơ sở dữ liệu trên model mà ta thường dùng trong codeigniter framework

1 – Thao tác liệt kê và nhận trả dữ liệu:
+ Lựa chọn tên cột cần lấy

+ Truy vấn với điều kiện:

+ Sắp xếp kết quả trả về theo 1 trường nào đó.

+ Giới hạn kết quả trả về:

+ Lấy tất cả record từ câu truy vấn:

+ Lấy 1 record trong dữ liệu:

+ Đếm số xem có bao nhiêu dòng:

Ví dụ:

2- Thao tác thêm, xóa, sửa dữ liệu:

+ Thêm dữ liệu

Ví dụ:
+ Sửa dữ liệu

Ví dụ:

+ Xóa dữ liệu

Ví dụ:

Với biến $data của chúng ta là một mảng dữ liệu:
Ví dụ:

Trong trường hợp bạn không muốn dùng active record. Thì vẫn có thể viết câu truy vấn bình thường thông qua cú pháp $this->db->query(“Câu query”);

Bạn thấy đấy, tương tác và sử dụng model trong Codeigniter Framework thật đơn giản phải không nào. Nếu bạn kiên nhẫn tham khảo và thực hành bài viết này, tôi tin bạn đã có thể bắt tay vào viết ứng dụng từng bước một rồi đấy. Trong bài kế, tôi sẽ mổ sẻ về một số vấn đề liên quan đến kiểm tra tính hợp lệ của dữ liệu trên form. Qua đó ta có thể dễ dàng viết được các chức năng thêm record một cách dễ dàng.

(Bùi Quốc Huy)

Cùng Nội Dung:

Liên Quan Khác

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">