Вы можете переопределить метод 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);
}
Я читал об этом раньше здесь, но, кажется, не могу получить его работу: S http://www.zendframeworkinaction.com/2008/01/30/zend_db_table_abstract-in-version-15/ очень странно – sfusion
Что означает «не может показаться, что он работает»? Вы получаете сообщения об ошибках или неправильные результаты или результаты вообще? Вы пытались отладить, что происходит? –
Попробуйте добавить var_dump ($ select -> __ toString()) в методе выше - непосредственно перед вызовом родительского метода и посмотреть, как выглядит сгенерированная строка SQL. –