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

Php 从Zend framework中的行集(而不是单行)检索依赖行集,php,sql,zend-framework,frameworks,Php,Sql,Zend Framework,Frameworks,我想知道我是否可以使用Zend框架高效地检索额外的依赖行,而不必求助于大量自定义代码。我将使用Bugs数据库的Zend示例来解释我的问题: $accountsTable = new Accounts(); $accountsRowset = $accountsTable->find(1234); $user1234 = $accountsRowset->current(); $bugsReportedByUser = $user1234->findDependen

我想知道我是否可以使用Zend框架高效地检索额外的依赖行,而不必求助于大量自定义代码。我将使用Bugs数据库的Zend示例来解释我的问题:

$accountsTable = new Accounts();
$accountsRowset = $accountsTable->find(1234);
$user1234 = $accountsRowset->current();       
$bugsReportedByUser = $user1234->findDependentRowset('Bugs');
然而,在我的例子中,Bugs表将有额外的依赖项,在本例中可能是BugReplication。如何检索这些复制品(有多对一的bug)。 在$bugsreportedbyser上对foreach进行编码,并获取额外的dependentRowset以获得复制,这似乎非常糟糕。这将导致“n”顺序查询,而每个请求总是需要固定数量的查询


这对于连接来说似乎微不足道,但我还没有在Zend ecosphere中找到一种合理的方法来做到这一点。

我想了很久,但归根结底,这是因为缺少了行集方法->getDependentRowset。(不要误认为是行(单数)->getDependentRowset())

因此,扩展Zend_Db_Table_Row_Abtract,并通过以下方式在示例的Bugs Table类中使用它:

class BugsTable extends Zend_Db_Table_Abstract
{
    protected $_name = 'bugs';
    protected $_rowsetClass = 'MyRowset';
...
并在MyRowSet中实现findDependentRowset($dependentTable)。高级别的实施将是:

  • 将Bug主键检索为
    $id
    (数组)
  • 调用
    bugsTable->find($id)
    (可以使用Zend\u Db\u Table\u关系找到关系)
  • 现在,您已经拥有多行*s*中的所有相关行
  • 可选:ReplicationMapper逻辑将它们映射到对象。BugsMapper逻辑可以将它们添加到高级Bugs模型(而不是BugsStable)

  • 我想了很久,但归根结底是缺少了行集方法->getDependentRowset。(不要误认为是行(单数)->getDependentRowset())

    因此,扩展Zend_Db_Table_Row_Abtract,并通过以下方式在示例的Bugs Table类中使用它:

    class BugsTable extends Zend_Db_Table_Abstract
    {
        protected $_name = 'bugs';
        protected $_rowsetClass = 'MyRowset';
    ...
    
    并在MyRowSet中实现findDependentRowset($dependentTable)。高级别的实施将是:

  • 将Bug主键检索为
    $id
    (数组)
  • 调用
    bugsTable->find($id)
    (可以使用Zend\u Db\u Table\u关系找到关系)
  • 现在,您已经拥有多行*s*中的所有相关行
  • 可选:ReplicationMapper逻辑将它们映射到对象。BugsMapper逻辑可以将它们添加到高级Bugs模型(而不是BugsStable)

  • 当然,这不如实联接有效,但是这样,复杂性顺序从
    O(n)
    变为
    O(x)
    ,其中
    n
    =结果集的大小,
    x
    =依赖关系的数量。(
    O(1)
    =1个对服务器的查询)当然,这并不像真正的连接那样有效,但是通过这种方式,复杂性顺序已经从
    O(n)
    变为
    O(x)
    ,其中
    n
    =结果集的大小,
    x
    =依赖关系的数量。(
    O(1)
    =1对服务器的查询)