我有两张表registries
和names
。因此,我有两个模型类。我在 registries 模型中编写方法,我需要获取 names 表/模型中的所有名称。我怎么做的?
一个简单的new Names()
应该有效吗?但是,它是否被推荐?
答案 0 :(得分:6)
是的,可能在另一个表类的方法中创建另一个表类的实例。
但是如果您要完成涉及多个表的应用程序工作,那么最好设计一个封装该应用程序工作的类,并使用其中的两个表。
这就是为什么将表称为模型是不准确的。在Zend_Db_Table
文档中没有任何地方将表格称为模型。
模型代表应用程序的某些部分,它可能涉及多个表以便完成其工作。与您的表对应的类只是一个表。
将模型与桌子分离!
重新评论:您仍然认为模型扩展Zend_Db_Table_Abstract
- 它没有!
模型不是数据访问类,它是应用程序的一个单元。它不会扩展Zend Framework的任何部分。
模型和表格之间的关系是 HAS-A ,而不是 IS-A 。
class MyRegistryModel // extends nothing
{
/**
* @var Zend_Db_Table_Abstract
*/
protected $_registryTable;
/**
* @var Zend_Db_Table_Abstract
*/
protected $_namesTable;
public function __construct()
{
$this->_registryTable = new RegistryTable();
$this->_namesTable = new NamesTable();
}
public function getDailyReport()
{
// use the tables as needed to build the report
}
}
答案 1 :(得分:1)
为此,您必须使用依赖关系设置表格
registryTable->find(1)->current()->getDependentRowset($namesTable)