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