2010-02-18 5 views
2

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

Пример.

У меня есть

и

class Automobili_Model_Row_Car extends Zend_Db_Table_Row_Abstract { 
} 

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

Для чего это нужно?

С уважением, Sasa Stamenkovic.

ответ

1

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

Вы имеете 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. Эта функция будет ленить загружать класс модели по запросу.

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

+0

Хороший вопрос. Я тоже думал, что выполнение лишнего запроса - такая трата. Но переоценка Zend_Db_Table_Row_Abstract :: __ get() может быть интересной. Я могу получить ссылочные данные там только в случае необходимости. Любые советы приветствуются. Мне просто нужно найти правильный путь для извлечения данных из класса, расширяющего Zend_Db_Table_Row_Abstract. В классах, расширяющих Zend_Db_Table_Abstract, я запускаю select() или insert(), но никогда ничего не делал в Zend_Db_Table_Row_Abstract. Спасибо. – umpirsky

0

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