从Zend框架中的行集(而不是单行)检索依赖行集


Retrieve dependent rowset from a rowset (not a single row) in Zend framework

我想知道是否可以使用Zend框架有效地检索额外的依赖行,而无需使用大量自定义代码。我将使用Bugs数据库的Zend示例来翻译我的问题:

$accountsTable = new Accounts();
$accountsRowset = $accountsTable->find(1234);
$user1234 = $accountsRowset->current();       
$bugsReportedByUser = $user1234->findDependentRowset('Bugs');

然而,在我的情况下,Bugs表会有额外的依赖项,在本例中可能是BugReproduction。如何检索这些复制品(有很多个错误)。在$bugsReportedByUser上对foreach进行编码似乎非常糟糕,并获取额外的dependentRowset以获得再现。这将导致"n"个顺序的查询,而每个请求总是需要固定数量的查询。

这对于Joins来说似乎微不足道,但我还没有在Zend生态圈中找到合理的方法。

我想了很久,但归根结底是行集方法->getDependentRowset的基本缺失。(不要被误认为是Row(单数)->getDepedenRowset())

因此,扩展Zend_Db_Table_Row_Abtract,并在示例的Bugs Table类中使用它:

class BugsTable extends Zend_Db_Table_Abstract
{
    protected $_name = 'bugs';
    protected $_rowsetClass = 'MyRowset';
...

并在MyRowSet中实现findDependentRowset($dependentTable)。一个高级别的实现是:

  1. 检索bug主键作为$ids(数组)
  2. 调用bugsTable->find($ids)(可以使用Zend_Db_Table_Relationship找到关系)
  3. 现在,您已经拥有了行*s*的倍数中的所有从属行
  4. 可选:ReproductionMapper逻辑会将它们映射到对象。BugsMapper逻辑可以将它们添加到高级Bugs模型(而不是BugsTable)