Trang

Thứ Năm, 18 tháng 7, 2013

Cấu hình kết nối cở sở dữ liệu trong Zend Framework [Zend Framework]

Trước khi thao tác bất kỳ công việc gì với cơ sở dữ liệu thì bước đầu tiên là ta phải cấu hình kết nối cơ sở dữ liệu. Có nhiều cách để thực hiện việc này..
Cách 1: Khai báo trong file application.ini
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.username = "root"
resources.db.params.password = "xxxxxx"
resources.db.params.dbname = "zend"
resources.db.params.charset = "UTF8"
- Tiếp tục, mở file bootstrap.php thêm đoạn code sau:
<?php
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
       {
           protected function _initDB()
            {
               $db = $this->getPluginResource('db')->getDbAdapter();
               Zend_Registry::set('db', $db);
            }
       }
?>
Giải thích:
+ Theo đoạn code trên, ta thêm vào phương thức initDB(). Đây là phương thức sẽ được triệu gọi khi chạy ứng dụng. Tại đây, ta lấy thông tin kết nối từ nội dung đã cấu hình ở file application.ini.
+ 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 các class trong thư mục Models, ta viết hàm __construct() để lấy giá trị từ registry để đưa vào thuộc tính tên $db. Để mỗi khi ta khởi tạo đối tượng thì đối tượng kết nối đã được tạo sẵn.
class Default_Model_Chitiettin extends Zend_Db_Table_Abstract
  {
        protected $_name="chitiettin";
        protected $_primary="idTin";
        protected $_db;
        
       public function __construct()
           {
                  $this->_db=Zend_Registry::get('db');
           }
       
       public function getTin()
         {
              $se=$this->_db->select()
                       ->from(array('ctt'=>'chitiettin'),array('idTin','TieuDe','TieuDe_KhongDau','TomTat','UrlHinh','ThuMucHinh','ThuMucHinhRoot','Ngay','ThoiGian'))
                       ->join(array('cd'=>'chude'),'ctt.idCD=cd.idCD',array('idCD','TenCD'))
                       ->where('ctt.AnHien = 1')
                       ->order('ctt.idTin DESC');
                $qr=$this->_db->query($se);
                $kq=$qr->fetchAll();
                 if($kq)
                     { return $kq ; }else{ return false; }
          }
  }

Cách 2: Khai báo trong file bootstrap.php
protected function _initDB()
    {
        $db = Zend_DB::factory("Pdo_mysql",array(
                                                "host"=>"localhost",
                                                "username"=>"root",
                                                "password"=>"xxxx",
                                                "dbname"=>"zend",
                                                "charset"=>"utf8"
                                            ));    
        $db->setFetchMode(Zend_Db::FETCH_ASSOC);
        Zend_Db_Table::setDefaultAdapter($db);
        Zend_Registry::set('db', $db);
   
    }
- Ta cấu hình kết nối csdl qua phương thức Zend_DB::factory([...option...]), sau đó lưu đối tượng kết nối này vào registry.
- Trong Model, ta cấu hình các class như cách 1 để lấy registry của đối tượng kết nối.

Không có nhận xét nào:

Đăng nhận xét