Расширение Zend_Db_Table_Row_Abstract - PullRequest
2 голосов
/ 18 февраля 2010

Я хочу расширить Zend_Db_Table_Row_Abstract, чтобы иметь некоторые дополнительные поля помимо полей из таблицы.

Пример.

У меня есть

class Automobili_Model_Car extends Zend_Db_Table_Abstract { 
        protected $_name = 'car'; 
        protected $_rowClass = 'Automobili_Model_Row_Car'; 
} 

и

class Automobili_Model_Row_Car extends Zend_Db_Table_Row_Abstract { 
} 

У таблицы автомобилей есть model_id, который ссылается на таблицу моделей (corsa, clio ...), я хочу, чтобы Automobili_Model_Row_Car загружала модель из зависимой таблицы, а не только model_id из таблицы автомобилей.

Какое право делать это?

С уважением, Саша Стаменкович.

Ответы [ 2 ]

1 голос
/ 18 февраля 2010

У вас есть несколько вариантов:

У вас есть методы findDependentRowset () и findParentRow (), упомянутые ранее. Для тех, кто сказал бы, прочитайте документацию: http://framework.zend.com/manual/en/zend.db.table.relationships.html. Я никогда не знал, как этот метод, так что я не буду много говорить об этом.

Еще одна опция - Zend_Db_Table_Row_Abstract имеет функцию init (), которую вы можете переопределить. Вы можете загрузить другую строку оттуда, и каждый раз, когда создается объект Car, он загружает модель. Это может быть дорого, хотя для каждого объекта у вас есть другой запрос к вашей базе данных. Если вы загрузите 50 строк в одном запросе, у вас будет еще 50 запросов, которые будут выполнены при создании объекта Car.

Другой вариант - добавить функцию getModel () в класс Car. Эта функция будет лениво загружать класс Model при запросе.

Надеюсь, это поможет.

0 голосов
/ 18 февраля 2010

Можете ли вы опубликовать более подробную информацию о том, как вы хотите, чтобы он работал точно ... Я имею в виду, что вы всегда можете выбрать зависимый или родительский набор строк с findDependentRowset и findParentRow соответственно.

...