2009-09-23 74 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