我想要扩展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表有model_id,它引用了模型表(corsa,clio...),我想让Automobili_Model_Row_Car从依赖表model中加载模型,而不仅仅是从car表中加载model_id。
做这件事的正确方式是什么?
你好,萨萨·斯塔门科维奇。
发布于 2010-02-18 16:04:06
您有几个选项:
您有前面提到的findDependentRowset()和findParentRow()方法。对于那些我认为应该阅读文档的人:http://framework.zend.com/manual/en/zend.db.table.relationships.html。我从来没有真正掌握过这种方法的诀窍,所以我不会说太多。
另一种选择是Zend_Db_Table_Row_Abstract有一个可以覆盖的init()函数。您可以从那里加载另一行,每次创建Car对象时,它都会加载模型。然而,对于每个对象来说,这可能是很昂贵的,因为您需要对数据库进行另一个查询。如果在一个查询中加载50行,那么在创建Car对象时将执行另外50个查询。
另一种选择是向Car类添加一个getModel()函数。此函数将在请求时延迟加载Model类。
希望这能有所帮助。
发布于 2010-02-18 15:38:55
你能发布更多关于你希望它是如何工作的细节吗…我的意思是,您总是可以分别使用findDependentRowset和findParentRow来获取依赖行集或父行集。
https://stackoverflow.com/questions/2286929
复制相似问题