如何从Zend_Db模型类中的另一个表中获取数据?

时间:2010-05-16 02:51:01

标签: php zend-framework model

我有两张表registriesnames。因此,我有两个模型类。我在 registries 模型中编写方法,我需要获取 names 表/模型中的所有名称。我怎么做的?

一个简单的new Names()应该有效吗?但是,它是否被推荐?

2 个答案:

答案 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)