Php Zend Dd行集获取父行

Php Zend Dd行集获取父行,php,zend-framework,Php,Zend Framework,我想知道是否可以在Zend Db行集中使用抽象而不是联接,是否可能 例如,我可以从父表中获取一些信息,如这里所示 /** * Get default photo info (path , description) */ public function getDefaultPhotoInfo($userdId){ $select = $this->select($this) ->where('id=?', $userdId); $rowse

我想知道是否可以在Zend Db行集中使用抽象而不是联接,是否可能 例如,我可以从父表中获取一些信息,如这里所示

/**
 * Get default photo info (path , description)
 */
public function getDefaultPhotoInfo($userdId){

    $select = $this->select($this)
            ->where('id=?', $userdId);
    $rowset = $this->fetchAll($select);
    $current = $rowset->current();

    $res = $current->findParentRow('UserPhotos', 'Avatar');
    if(isset($res)){
        return $res->toArray();
    }
}
如何使用行集抽象来实现这种逻辑

table( id, pic_path,) table_translation(id, table_id, lang_id, pic_title);

上面是两个表的表示,其思想是从两个表中获取信息,指定lang_id,使用连接很容易,但我可以使用Db行集的抽象来实现吗?

只是为了澄清一下:在
Zend_Db_表
实例上执行
fetchAll
时,您会得到一个
Zend_Db_表
行集,它实现了
迭代器
接口。因此,在行集实例上调用
current()
,将返回一个
Zend\u Db\u Table\u行
实例

从ZF1.10开始,您可以定义实例或具体表实例中的表之间的关系,如中所述。由于指南相当详细,我将不在此重复

定义关系后,可以使用(指南中的示例1)从行中获取它们

或者通过神奇的发现方法

findParentRow()
方法与此有所不同,因为它从父行返回依赖行集的整行

Ex5:此示例显示如何从表bug(例如状态为“NEW”的bug之一)中获取Row对象,并在Accounts表中为报告bug的用户查找该行

在使用表关系时,请记住,这些关系将导致每个获取的依赖表增加一个查询,而连接在一个表中完成所有查询

另请参见以下相关问题:


仅作澄清:在
Zend_Db_表
实例上执行
fetchAll
时,您会得到一个
Zend_Db_表行集
,它实现了
迭代器
接口。因此,在行集实例上调用
current()
,将返回一个
Zend\u Db\u Table\u行
实例

从ZF1.10开始,您可以定义实例或具体表实例中的表之间的关系,如中所述。由于指南相当详细,我将不在此重复

定义关系后,可以使用(指南中的示例1)从行中获取它们

或者通过神奇的发现方法

findParentRow()
方法与此有所不同,因为它从父行返回依赖行集的整行

Ex5:此示例显示如何从表bug(例如状态为“NEW”的bug之一)中获取Row对象,并在Accounts表中为报告bug的用户查找该行

在使用表关系时,请记住,这些关系将导致每个获取的依赖表增加一个查询,而连接在一个表中完成所有查询

另请参见以下相关问题:

  $accountsTable = new Accounts();
  $accountsRowset = $accountsTable->find(1234);
  $user1234 = $accountsRowset->current();       
  $bugsReportedByUser = $user1234->findDependentRowset('Bugs');
  $bugsTable = new Bugs();
  $bugsRowset = $bugsTable->fetchAll(array('bug_status = ?' => 'NEW'));
  $bug1 = $bugsRowset->current();
  $reporter = $bug1->findParentRow('Accounts');