Trước hết, ta cần tìm hiểu về lớp Zend_Registry. Đây là thư viện tạo ra một giá trị toàn cục trong ứng dụng của chúng ta, nó có thể chứa giá trị, mảng và một đối tượng. Để thiết lập ta sử dụng cú pháp:
PHP Code:
Zend_Registry::set('tên','giá trị');
PHP Code:
Zend_Registry::get(tên); Tạo cơ sở dữ liệu và thêm dữ liệu vào bảng theo cú pháp sau:
Mã:
CREATE TABLE user (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
username varchar(50) NOT NULL,
password char(32) NOT NULL,
level int(1) NOT NULL DEFAULT '1',
PRIMARY KEY (id)
);
INSERT INTO 'user' (username,password,level) VALUES('admin', '12345', 2);
INSERT INTO 'user' (username,password,level) VALUES('kenny', '12345', 2);
INSERT INTO 'user' (username,password,level) VALUES('jacky', '12345', 1);
INSERT INTO 'user' (username,password,level) VALUES('Lena', '12345', 1);
Mã:
resources.db.adapter = "Pdo_mysql" resources.db.params.host = "localhost" resources.db.params.username = "root" resources.db.params.password = "" resources.db.params.dbname = "qhonline"
PHP Code:
<?phpclass Bootstrap extends Zend_Application_Bootstrap_Bootstrap{
protected function _initDatabase(){
$db = $this->getPluginResource('db')->getDbAdapter();
Zend_Registry::set('db', $db);
}
}Kế tới, ta thực hiện việc tạo registry để lưu trữ đối tượng kết nối này.
Tại thư mục Models, ta tạo file tên User.php
Với nội dung lớp này như sau:
PHP Code:
<?phpclass Model_User{
protected $db;
public function __construct(){
$this->db=Zend_Registry::get('db');
}
public function listall(){
$sql=$this->db->query("select * from user order by id DESC");
return $sql->fetchAll();
}
}Kế đến ta tạo phương thức listall() thực hiện công việc liệt kê toàn bộ người dùng có trong bảng user. Lúc này, để thực hiện được câu truy vấn thì ta dùng phương thức query() chạy. Và lấy kết quả bới phương thức fetchAll() .
Tiếp tục, tại controller User ta gọi model như sau:
PHP Code:
<?phpclass UserController extends Zend_Controller_Action{
public function indexAction(){
$muser=new Model_User;
$data=$muser->listall();
echo "<pre>";
print_r($data);
echo "</pre>";
}
}Với phương pháp tương tác này, rõ ràng chúng ta có thể chạy bất cứ câu lệnh nào mà ta muốn trong ứng dụng một cách dễ dàng. Đồng thời, có thể tạo ra những tùy biến kết hợp giữa Zend_Db_Table và Zend_Db. Chẳng hạn, với câu truy vấn đơn giản, ta có thể sử dụng Zend_Db_Table để lấy giá trị. Nhưng với các câu truy vấn phức tạp đòi hỏi phải kết bảng, xử lý nhiều, thì việc dùng cách tương tác Zend_Db lại là sử lựa chọn hiệu quả nhất.
PHP Code:
<?phpclass Model_User extends Zend_Db_Table_Abstract{
protected $_name="user";
protected $_primary="id";
protected $db;
public function __construct(){
$this->db=Zend_Registry::get('db');
}
public function listall(){
$sql=$this->db->query("select * from user where level='1' order by id DESC");
return $sql->fetchAll();
}
public function listall2(){
$query=$this->select();
$query->where('level =?','2');
return $thisp>fetchAll($query);
}
}Kết thúc bài này, ít nhiều chúng ta đã có thể định hình và hiểu rõ hơn về cơ chế tương tác cơ sở dữ liệu trongzend framework. Qua đó có thể vận dụng linh hoạt chúng trong thực tế để giải quyết các vấn đề về cơ sở dữ liệu. Trong bài tiếp theo tôi sẽ hướng dẫn các bạn tìm hiểu và sử dụng lớp Zend_Paginator để phân trang dữ liệu cho ứng dụng.
Xem bài tiếp theo: Zend Framework: Sử dụng lớp Zend_Paginator để phân trang
(Bùi Quốc Huy)
Không có nhận xét nào:
Đăng nhận xét