Ваш класс Model не должен расширять класс таблицы. Класс таблицы является отдельным. Ваша Модель должна расширять класс строки, если вообще расширяет что-либо из Zend_Db. Также вам не следует помещать методы извлечения непосредственно в ваши классы Model, они будут использоваться в классах таблиц.
Это потому, что в парадигме, которую вы здесь пытаетесь использовать, модель представляет одну строку данных, класс Table представляет таблицу как хранилище данных, а класс Rowset представляет коллекцию строк (или моделей).
Чтобы правильно реализовать то, что вы описываете в своем вопросе, вы должны сделать что-то вроде следующего:
class Application_Model_DbTable_Company extends Zend_Db_Table_Abstract
{
// table name
protected $_name = 'company';
protected _$rowClass = 'Application_Model_Company';
// your custom retrieval methods
}
class Application_Model_Company extends Zend_Db_Table_Row
{
protected $_tableClass = 'Application_Model_DbTable_Company';
// custom accessors and mutators
}
Тем не менее, использование какой-либо реализации шаблона Data Mapper - это то, что действительно рекомендуется. Посмотрите Quickstart для подробного руководства по упрощенной реализации.