intTypePromotion=1

Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_Table

Chia sẻ: Eef Sff | Ngày: | Loại File: PDF | Số trang:12

0
105
lượt xem
28
download

Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_Table

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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...

Chủ đề:
Lưu

Nội dung Text: Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_Table

  1. Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_Table
  2. 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 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ộ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. Để 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,
  3. 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.ini của chúng ta những đoạn lệnh sau: 1 resources.db.adapter = "Pdo_mysql" 2 resources.db.params.host = "localhost"
  4. 3 resources.db.params.username = "root" 4 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 file User.php trong thư mục Model với nội dung như sau: 1
  5. 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 model trong zend framework. Vì tất cả các file nằm trong thư mục Model nên áp dụ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úng ta 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ương thứ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 truy vấn select * from user vậy.
  6. Sau cùng, ta tạo lớp UserController trong file controllers/UserController.php với nội dung sau: 1
  7. 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 in C:\xampp\htdocs\zfexam\application\controllers\UserController.php on line 4 Hệ 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
  8. 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ĩa cho hệ thống biết được đường dẫn tới các lớp mà ta tạo trong Model và form sau 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_Table 1- 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 ta cần sử dụng phương thức: 1 $this->select();
  9. 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ều kiệ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ép so 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ính 1 $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();
  10. 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ào fetchall() 1 $this->fetchall($query); + Hiển thị 1 dòng dữ liệu 1 $this->fetchRow(); Ví dụ đầy đủ về hiển thị dữ liệu: 1 public function listuser(){ 2 $data=$this->select(); 3 $data->from('user',array('username','id')); 4 $data->where('id > ?',1); 5 $data->order('username DESC'); 6 $data->limit(3); 7 $data=$this->fetchAll($data); 8 return $data; 9} 2- Thao tác thêm, xóa, sửa dữ liệu: + Thêm dữ liệu:
  11. 1 $this->insert($data); Ví dụ: 1 public function insert_user($data){ 2 3 $this->insert($data); 4} + Sửa dữ liệu: 1 $this->update($data,$where); Ví dụ: 1 public function update_user($data,$where){ 2 $where="id='1'"; 3 $this->update($data,$where); 4} Với $data của chúng ta là một mảng dữ liệu: 1 $data=array( 2 "username" => "kenny", 3 "password" => "12345",
  12. 4 "level" => "2" 5 ); + Xóa dữ liệu: 1 $this->delete($where); Ví dụ: 1 public function delinfo($id){ 2 $where="id=".$id; 3 $this->delete($where); 4} Kết thúc bài này, ta đã hiểu được cơ bản về cách thức sử dụng Model trong Zend Framework, đồng thời cũng nắm được phần nào về các phương thức phổ biến thường sử dụng trong ứng dụng. Trong bài kế tiếp, tôi sẽ hướng dẫn các bạn tìm hiểu về phương pháp tương tác với cơ sở dữ liệu trên lớp Zend_Db. Qua đó có sự tùy biến tốt hơn trong việc viết ứng dụng trên zend framework.

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản