Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_Table
Số trang: 12
Loại file: pdf
Dung lượng: 118.58 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_Table.Kết thúc bài vừa rồi, chúng ta đã tìm hiểu về quy trình làm việc trên view và cơ bản về layout trong zend framework. Tiếp tục ở bài này, tôi sẽ hướng dẫn các bạn tìm hiểu về quy trình tương tác cơ sở dữ liệu trên model như thế nào. Zend Framework cho ta nhiều phương pháp để tương tác với cơ sở dữ liệu. Và một trong những lớp tương tác với model mà tôi lựa chọn ở đây chính là lớp Zend_Db_Table.Vậy trước hết, ta tìm hiểu...
Nội dung trích xuất từ tài liệu:
Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_TableZend Framework: Tương tác cơ sở dữ liệu với Zend_Db_TableKết thúc bài vừa rồi, chúng ta đã tìm hiểu về quy trình làm việc trên viewvà cơ bản về layout trong zend framework. Tiếp tục ở bài này, tôi sẽhướng dẫn các bạn tìm hiểu về quy trình tương tác cơ sở dữ liệu trên modelnhư thế nào. Zend Framework cho ta nhiều phương pháp để tương tác vớicơ sở dữ liệu. Và một trong những lớp tương tác với model mà tôi lựa chọn ởđây chính là lớp Zend_Db_Table.Vậy trước hết, ta tìm hiểu xem model là gì ?. 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 cơ sở dữ liệu từnhững yêu cầu của controller. Model xử lý và trả về kết quả dưới dạng mộtmảng dữ liệu, khi đó thông qua view ta sẽ đẩy nội dung của mảng dữ liệu ấyra 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.Để tương tác được với Model thì trước tiên ta phải kết nối được với cơ sở dữliệu. Vậy ta tạo 1 bảng user với các cú pháp như sau:01 CREATE TABLE user (02 id int(10) unsigned NOT NULL AUTO_INCREMENT,03 username varchar(50) NOT NULL,04 password char(32) NOT NULL,05 level int(1) NOT NULL DEFAULT 1,06 PRIMARY KEY (id)07 ); INSERT INTO user (username,password,level) VALUES(admin,08 12345, 2); INSERT INTO user (username,password,level) VALUES(kenny,09 12345, 2); INSERT INTO user (username,password,level) VALUES(jacky,10 12345, 1); INSERT INTO user (username,password,level) VALUES(Lena, 12345,11 1);Tiếp tục ta kết nối với cơ sở dữ liệu bằng cách thêm vào file application.inicủa chúng ta những đoạn lệnh sau:1 resources.db.adapter = Pdo_mysql2 resources.db.params.host = localhost3 resources.db.params.username = root4 resources.db.params.password = 5 resources.db.params.dbname = qhonlineĐoạn thông tin này khai báo cho hệ thống biết các tham số như host, user,pass, dbname.Sau khi đã kết nối được với cơ sở dữ liệu, tiếp theo. Chúng ta sẽ tạo fileUser.php trong thư mục Model với nội dung như sau:1 8}Qua đoạn lệnh trên ta hiểu phần nào về quy tắc định nghĩa một lớp modeltrong zend framework. Vì tất cả các file nằm trong thư mục Model nên ápdụng theo cơ chế lazy loading ta có quy tắc định nghĩa: Model_Tênfile. Cụthể ở đây tôi tạo ra file User.php, nên lớp của tôi định nghĩa sẽ làModel_User.Lưu ý là thư mục Models của chúng ta có s, nhưng khi định nghĩa thì chúngta bỏ qua s và viết bình thường là Model.Trong lớp Model_User ở trên, ta kế thừa lớp Zend_Db_Table_Abstract. Vàkhai báo tên bảng, tên khóa chính thông qua hai thuộc tính $_name và$_primary. Cuối cùng, ta định nghĩa phương thức listall() và dùng phươngthức fetchall() để lấy toàn bộ dữ liệu vốn có trong bảng user.Ở đây zend framework sử dụng cơ chế Active Record. Nên phương thức$this->fetchall() nó tương đương với cú pháp lặp toàn bộ dữ liệu từ câu truyvấn select * from user vậy.Sau cùng, ta tạo lớp UserController trong file controllers/UserController.phpvới nội dung sau:1 mảng.Chạy thử nghiệm với đường dẫn: http://localhost/zfexam/user/Kết quả sẽ thông báo lỗi:Fatal error: Class Model_User not found inC:xampphtdocszfexamapplicationcontrollersUserController.php on line 4Hệ thống của chúng ta chưa hiểu được lớp Model_User. Vì thế ta cần phảiđịnh nghĩa như sau trong file bootstrap.php:01 08 return $autoloader;09 }10 }Như các bạn thấy đấy, ta đã thêm vào phương thức autoload để định nghĩacho hệ thống biết được đường dẫn tới các lớp mà ta tạo trong Model và formsau này.Chạy thử nghiệm lại với đường dẫn: http://localhost/zfexam/user/Kết quả sẽ hiển thị danh sách user dưới dạng mảng như ta mong đợi.Một số phương thức thường dùng trong lớp Zend_Db_Table1- Thao tác liệt kê và nhận dữ liệu:Để có thể thực hiện các thao tác liệt kê dữ liệu đầy đủ và chi tiết. Chúng tacần sử dụng phương thức:1 $this->select();Và từ phương thức này, chúng ta sẽ gọi các thao tác khác liên quan như điềukiện, giới hạn, sắp xếp,…1 $query=$this->select();+ Liệt kê dữ liệu theo cột:1 $query->from(tên_bảng,array(cột 1,cột 2));+ Liệt kê dữ liệu với một điều kiện:1 $query->where(cột =?,giá trị);Cú pháp ở trên cho ta liệt kê dữ liệu với điều kiện cột bằng giá trị nào đó.Quy tắc trong zend framework đối với mệnh đề where là tên cột, rồi đến phépso sánh, rồi đến ký hiệu ?. Và sau cùng là mới là giá trị.+ Sắp xếp dữ liệu theo cột thuộc tính1 $query->order(tên_cột ASC hoặc DESC);+Giới hạn dữ liệu hiển thị1 $query->limit(vị trí bắt đầu, số record muốn hiển thị);+ Hiển thị tất cả thông tin:1 $this->fetchall();Trường hợp hiển thị với các điều kiện ở phía trên thì ta truyền $query vàofetchall()1 $this->fe ...
Nội dung trích xuất từ tài liệu:
Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_TableZend Framework: Tương tác cơ sở dữ liệu với Zend_Db_TableKết thúc bài vừa rồi, chúng ta đã tìm hiểu về quy trình làm việc trên viewvà cơ bản về layout trong zend framework. Tiếp tục ở bài này, tôi sẽhướng dẫn các bạn tìm hiểu về quy trình tương tác cơ sở dữ liệu trên modelnhư thế nào. Zend Framework cho ta nhiều phương pháp để tương tác vớicơ sở dữ liệu. Và một trong những lớp tương tác với model mà tôi lựa chọn ởđây chính là lớp Zend_Db_Table.Vậy trước hết, ta tìm hiểu xem model là gì ?. 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 cơ sở dữ liệu từnhững yêu cầu của controller. Model xử lý và trả về kết quả dưới dạng mộtmảng dữ liệu, khi đó thông qua view ta sẽ đẩy nội dung của mảng dữ liệu ấyra 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.Để tương tác được với Model thì trước tiên ta phải kết nối được với cơ sở dữliệu. Vậy ta tạo 1 bảng user với các cú pháp như sau:01 CREATE TABLE user (02 id int(10) unsigned NOT NULL AUTO_INCREMENT,03 username varchar(50) NOT NULL,04 password char(32) NOT NULL,05 level int(1) NOT NULL DEFAULT 1,06 PRIMARY KEY (id)07 ); INSERT INTO user (username,password,level) VALUES(admin,08 12345, 2); INSERT INTO user (username,password,level) VALUES(kenny,09 12345, 2); INSERT INTO user (username,password,level) VALUES(jacky,10 12345, 1); INSERT INTO user (username,password,level) VALUES(Lena, 12345,11 1);Tiếp tục ta kết nối với cơ sở dữ liệu bằng cách thêm vào file application.inicủa chúng ta những đoạn lệnh sau:1 resources.db.adapter = Pdo_mysql2 resources.db.params.host = localhost3 resources.db.params.username = root4 resources.db.params.password = 5 resources.db.params.dbname = qhonlineĐoạn thông tin này khai báo cho hệ thống biết các tham số như host, user,pass, dbname.Sau khi đã kết nối được với cơ sở dữ liệu, tiếp theo. Chúng ta sẽ tạo fileUser.php trong thư mục Model với nội dung như sau:1 8}Qua đoạn lệnh trên ta hiểu phần nào về quy tắc định nghĩa một lớp modeltrong zend framework. Vì tất cả các file nằm trong thư mục Model nên ápdụng theo cơ chế lazy loading ta có quy tắc định nghĩa: Model_Tênfile. Cụthể ở đây tôi tạo ra file User.php, nên lớp của tôi định nghĩa sẽ làModel_User.Lưu ý là thư mục Models của chúng ta có s, nhưng khi định nghĩa thì chúngta bỏ qua s và viết bình thường là Model.Trong lớp Model_User ở trên, ta kế thừa lớp Zend_Db_Table_Abstract. Vàkhai báo tên bảng, tên khóa chính thông qua hai thuộc tính $_name và$_primary. Cuối cùng, ta định nghĩa phương thức listall() và dùng phươngthức fetchall() để lấy toàn bộ dữ liệu vốn có trong bảng user.Ở đây zend framework sử dụng cơ chế Active Record. Nên phương thức$this->fetchall() nó tương đương với cú pháp lặp toàn bộ dữ liệu từ câu truyvấn select * from user vậy.Sau cùng, ta tạo lớp UserController trong file controllers/UserController.phpvới nội dung sau:1 mảng.Chạy thử nghiệm với đường dẫn: http://localhost/zfexam/user/Kết quả sẽ thông báo lỗi:Fatal error: Class Model_User not found inC:xampphtdocszfexamapplicationcontrollersUserController.php on line 4Hệ thống của chúng ta chưa hiểu được lớp Model_User. Vì thế ta cần phảiđịnh nghĩa như sau trong file bootstrap.php:01 08 return $autoloader;09 }10 }Như các bạn thấy đấy, ta đã thêm vào phương thức autoload để định nghĩacho hệ thống biết được đường dẫn tới các lớp mà ta tạo trong Model và formsau này.Chạy thử nghiệm lại với đường dẫn: http://localhost/zfexam/user/Kết quả sẽ hiển thị danh sách user dưới dạng mảng như ta mong đợi.Một số phương thức thường dùng trong lớp Zend_Db_Table1- Thao tác liệt kê và nhận dữ liệu:Để có thể thực hiện các thao tác liệt kê dữ liệu đầy đủ và chi tiết. Chúng tacần sử dụng phương thức:1 $this->select();Và từ phương thức này, chúng ta sẽ gọi các thao tác khác liên quan như điềukiện, giới hạn, sắp xếp,…1 $query=$this->select();+ Liệt kê dữ liệu theo cột:1 $query->from(tên_bảng,array(cột 1,cột 2));+ Liệt kê dữ liệu với một điều kiện:1 $query->where(cột =?,giá trị);Cú pháp ở trên cho ta liệt kê dữ liệu với điều kiện cột bằng giá trị nào đó.Quy tắc trong zend framework đối với mệnh đề where là tên cột, rồi đến phépso sánh, rồi đến ký hiệu ?. Và sau cùng là mới là giá trị.+ Sắp xếp dữ liệu theo cột thuộc tính1 $query->order(tên_cột ASC hoặc DESC);+Giới hạn dữ liệu hiển thị1 $query->limit(vị trí bắt đầu, số record muốn hiển thị);+ Hiển thị tất cả thông tin:1 $this->fetchall();Trường hợp hiển thị với các điều kiện ở phía trên thì ta truyền $query vàofetchall()1 $this->fe ...
Tìm kiếm theo từ khóa liên quan:
cơ bản về layout zend framework cơ sở dữ liệu Zend_Db_Table. biệt tầng model phát triển mã nguồnGợi ý tài liệu liên quan:
-
62 trang 401 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 376 6 0 -
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 289 0 0 -
13 trang 289 0 0
-
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 283 0 0 -
Tài liệu học tập Tin học văn phòng: Phần 2 - Vũ Thu Uyên
85 trang 254 1 0 -
Đề cương chi tiết học phần Quản trị cơ sở dữ liệu (Database Management Systems - DBMS)
14 trang 243 0 0 -
8 trang 186 0 0
-
Giáo trình về dữ liệu và các mô hình cơ sở dữ liệu
62 trang 181 0 0 -
Giáo trình Cơ sở dữ liệu: Phần 2 - Đại học Kinh tế TP. HCM
115 trang 175 0 0