Ở bài trước mình đã giới thiệu cho các bạn 2 thành phần trong mô hình MVC đó là Controller và View trong CodeIgniter,hôm nay mình sẽ giới thiệu sang thành phần thứ 3 đó chính là Model trong CodeIgniter.
– Model là tầng xử lý những tác vụ liên quan đến tương tác cơ sở dữ liệu từ những yêu cầu của controller.
– Cấu hình thông tin kết nối CSDL các bạn truy cập vào application/config/database.php ,trong đây các bạn cần quan tầm tới cho mình đoạn cấu hình sau:
1
2
3
4
| $db [ 'default' ][ 'hostname' ] = 'localhost' ; $db [ 'default' ][ 'username' ] = 'root' ; $db [ 'default' ][ 'password' ] = '' ; $db [ 'default' ][ 'database' ] = ‘php'; |
Đây là cấu hình khi mình đang chạy trên localhost (mình sử dụng Xampp lên mặc định username=’root’ , password = ”) và tên CSDL của mình là php,các bạn cần cấu hình cho chính xác với dự án của các bạn nhé.
– Muốn kết nối với CSDL. Chúng ta chỉ việc gọi phương thức:
1
| $this ->load->database(); |
Tạo 1 model đầu tiên
– Các bạn truy cập vào application/models tạo file có tên là user_mode.php với nội dung:
1
2
3
4
5
6
7
| class User_model extends CI_Model { public function __construct() { parent::__construct(); $this ->load->database(); } } |
- Giống với controller, khi tạo lớp User_model thì chứ đầu tiên chúng ta phải viết hoa.
- Mọi model phải được kế thừa từ CI_Model
- Tên Model không được giống với tên controller,và tên class và tên file model phải giống nhau, tên file viết thường
- Nếu trong model sử dụng hàm khởi tạo __construct() thì bạn cần thêm parent::__construct(); để kế thừa từ CI_Model (tránh bị ghi đè)
- Đê kết nối tới csdl ta sử dụng phương thức $this->load->database();
Sử dụng Model trong CodeIgniter
– Để gọi 1 file model nào đó ta sử dụng cú pháp:
1
| $this ->load->model( "Tên_Model" ); |
– Để gọi 1 phương thức trong model ta sử dụng
1
| $this ->Tên_Model >ten_phuong_thuc(); |
– Ví dụ: Các bạn truy cập vào application/models tạo file có tên là user_mode.php với nội dung:
1
2
3
4
5
6
7
8
9
10
11
| class User_model extends CI_Model { public function __construct() { parent::__construct(); $this ->load->database(); } public function get_list() { return array (); } } |
Tại controller User các bạn sử dụng model như sau:
1
2
3
4
5
6
7
8
9
| class User extends CI_Controller { public function index() { //load model $this ->load->model( "user_model" ); //su dung phuong thuc get_list trong user_model $list = $this ->user_model->get_list(); } } |
Thao tác liệt kê và nhận trả dữ liệu
a.Lựa chọn tên cột cần lấy:
1
| $this ->db->select( "tên cột 1, tên cột 2" ); |
+ Nếu lấy hết các cột sử dụng:
1
| $this ->db->select( "*" ); |
b.Truy vấn với điều kiện:
1
| $this ->db->where( "tên cột" , "Giá trị" ); |
+ Hoặc có thể sử dụng 1 mảng các điều kiện
1
| $this ->db->where( array ( "tên cột" =>"Giá trị“)); |
c.Sắp xếp kết quả trả về theo 1 trường nào đó:
1
| $this ->db->order_by( "tên cột asc hoặc desc" ); |
+ Hoặc
1
| $this ->db->order_by( "tên cột”,”asc hoặc desc" ); |
d.Giới hạn kết quả trả về:
1
| $this ->db->limit( "Số dòng du liệu muốn lấy" , "Vị trí" ); |
e.Lấy tất cả record từ câu truy vấn:
+ Dữ liệu trả về dạng mảng sử dụng
+ Dữ liệu trả về dạng mảng sử dụng
1
| $query ->result_array(); |
+ Dữ liệu trả về dạng đối tượng sử dụng
1
| $query ->result(); |
f.Lấy 1 record trong dữ liệu:
+ Dữ liệu trả về dạng mảng sử dụng
+ Dữ liệu trả về dạng mảng sử dụng
1
| $query ->row_array(); |
+ Dữ liệu trả về dạng đối tượng sử dụng
1
| $query ->row(); |
g.Đếm số dòng dữ liệu trả về:
+ Dữ liệu trả về dạng mảng sử dụng
+ Dữ liệu trả về dạng mảng sử dụng
1
| $query ->num_rows(); |
Ví dụ tổng hợp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class User_model extends CI_Model { public function __construct() { parent::__construct(); $this ->load->database(); } public function get_list() { $this ->db->select(‘*’); //lấy tất cả thông tin $this ->db->where(“email ",“php@gmail.com" ); //điều kiện email = php@gmail.com $this ->db->order_by( "id”,”desc" ); //sắp xếp dữ liệu theo ID (id lớn tới nhỏ) $this ->db->limit(5,0); //lấy 5 thành viên, từ thành viên có vị trí đầu tiên $query = $this ->db->get( "user" ); //lấy dữ liệu từ bảng user return $query ->result(); //trả về 1 mảng các đối tượng } } |
– Với ví dụ tổng hợp phía trên chúng ta có thể diễn giải bằng lời như sau :”Lấy toàn bộ thông tin 5 thành viên mới nhất từ bảng user với điều kiện email = php@gmail.com”
Thao tác thêm, xóa, sửa dữ liệu
Thêm dữ liệu
+ Cú pháp:
1
| $this ->db->insert( "tên bảng" , "mảng dữ liệu" ); |
+ Ví dụ:
1
2
3
4
5
| $data = array ( 'name' => 'Nobitacnt' , 'email' => 'hoangvantuyencnt@gmail.com' ); $this ->db->insert( "user" , $data ); |
Cập nhật dữ liệu
+ Cú pháp:
1
| $this ->db->update( "tên bảng" , "mảng dữ liệu" ); |
+ Ví dụ:
1
2
3
4
5
6
| $data = array ( 'name' => 'Nobitacnt' , 'email' => 'hoangvantuyencnt@gmail.com' ); $this ->db->where( "id" ,“1"); $this ->db->update( "user" , $data ); |
Với ví dụ trên chúng ta đang thực hiện cập nhật thông tin cho thành viên có id = 1,nếu các bạn không có thêm điều kiện thì tất cả các thành viên sẽ bị cập nhật thông tin này,lên các bạn cần chú ý điều kiên này nhé.
Xóa dữ liệu
+ Cú pháp:
1
| $this ->db-> delete ( "tên_bảng" ); |
+ Ví dụ:
1
2
| $this ->db->where( "id" ,“1"); $this ->db-> delete ( "user" ); |
Với ví dụ trên chúng ta đang thực hiện xóa thành viên có id = 1,nếu các bạn không có thêm điều kiện thì tất cả các thành viên sẽ bị xóa,lên các bạn cần chú ý điều kiên này nhé.
Câu truy vấn bình thường thông
1
| $this ->db->query( "Câu query" ); |
0 nhận xét: