2009-09-23 96 views

回答

1

可以重寫Zend_Db_Table_Abstract:: _fetch()方法,並從數據庫適配器檢索行之前修改生成Zend_Db_Table_Select在那裏。據我所知fetch*-方法和find()Zend_Db_Table_Abstract歸結爲這種通用的行檢索方法(除了Zend_Db_Table_Abstract::fetchNew()自然),所以你修改後的代碼將被調用每次從數據庫中檢索行。

/** 
* Support method for fetching rows. 
* 
* @param Zend_Db_Table_Select $select query options. 
* @return array An array containing the row results in FETCH_ASSOC mode. 
*/ 
protected function _fetch(Zend_Db_Table_Select $select) 
{ 
    $select->where('deleted = false')->order('name asc'); 
    return parent:: _fetch($select); 
} 
+0

我在這裏讀這更早,但不能似乎得到它的工作:S http://www.zendframeworkinaction.com/2008/01/30/zend_db_table_abstract-in-version-15/ 很奇怪 – sfusion 2009-09-23 09:35:12

+0

什麼「似乎無法得到它的工作」是什麼意思?你是否收到錯誤信息或錯誤的結果,或者結果都不是?你有沒有嘗試調試過程中發生了什麼? – 2009-09-23 09:56:54

+1

嘗試在上述方法中添加一個var_dump($ select - > __ toString()) - 在調用父方法之前,查看生成的SQL字符串的樣子。 – 2009-09-23 09:58:02