Zend Framework 中的 Zend_Db 可以針對資料庫操作,而 Zend_DB_Table 底下繼承了許多像 Zend_Db_Select 之類的物件提供一些函式幫你組合 SQL query 和存取 DB

範例
1.產生 DB Adapter

db = Zend_Db::factory('Pdo_Mysql', array(      'host'     => 'localhost',      'username' => 'johnson',      'password' => '123',      'dbname'   => 'test'  ));    // OR    // 設定檔寫在 application/configs/application.ini  dbAdapter = Zend_Db_Table::getDefaultAdapter();

// OR

// 直接 Extend Zend_Db_Table_Abstract 的自訂 DB Adapter

2.組合 Query String

select = dbAdapter->select()
                    ->from('record', '*')
                    ->joinLeft('class', 'class.class_id = record.class_id')
                    ->where('record.dep_id = ?', 1)
                    ->where('record.date = ?', time())
                    ->order(array('record.class_id DESC', 'record.dep_id'))
                    ->limit(1, 1);

// 如果需要 debug 可以直接輸出成字串
echo select->__toString();    // 根據步驟1,使用的物件不同權限會有些不一樣(直接繼承 Zend_Db_Table_Abstract 的話,因為 Zend_Db_Table_Row 只能操作一張表)  // 如果在使用 join 時遇到 Select query cannot join with another table,要關閉setIntegrityCheck  select->setIntegrityCheck(false);

3.執行 Query String

result = dbAdapter->fetchAll($select);
Categories: ZendFramework