扩展Zend_Db_Table_Row_Abstract

时间:2010-02-18 07:29:40

标签: zend-framework zend-db-table extend

我想扩展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 { 
} 

Car table有model_id,它指的是模型表(corsa,clio ...),我想让Automobili_Model_Row_Car从依赖表模型加载模型,而不仅仅是car table中的model_id。

什么是正确的做法?

此致 Sasa Stamenkovic。

2 个答案:

答案 0 :(得分:1)

您有几个选择:

您拥有之前提到的findDependentRowset()和findParentRow()方法。对于那些我会说阅读文档的人:http://framework.zend.com/manual/en/zend.db.table.relationships.html。我从来没有真正掌握这种方法,所以我不会说太多。

另一个选项是Zend_Db_Table_Row_Abstract有一个你可以覆盖的init()函数。您可以从那里加载另一行,每次创建Car对象时,它都会加载模型。这对于您对数据库进行另一次查询的每个对象来说都是昂贵的。如果在一个查询中加载50行,则在创建Car对象时将执行50个以上的查询。

另一种选择是将getModel()函数添加到Car类。此函数将在请求时延迟加载Model类。

希望这有帮助。

答案 1 :(得分:0)

您是否可以发布有关您希望它如何正常工作的更多详细信息...我的意思是您始终可以分别使用findDependentRowsetfindParentRow来获取相关或父行集。