Zend DB关系

时间:2011-01-04 10:19:07

标签: zend-framework zend-db zend-db-table

我正在zend框架中创建一个应用程序。现在我被困在Zend表关系中。

我有2张桌子。我在其他表中设置了主键和相应的引用。 现在我想使用关系(而不是连接函数)加入这两个表。在zend有可能吗?

表结构类似于下面的结构

Schemetable

scheme_id 主键

采用scheme_name

Scheme_Desc

Ratestable

rate_id

Scheme_id *外键引用scheme_id *

率:

时间段:

b / w方案和费率有一对多的关系

我在模型类中做了一些编码

Scheme.php

class Scheme extends Zend_Db_Table_Abstract {


 protected $_name = 'schemetable';

 protected $_dependentTables = array('rates');
}

Rates.php

class Rates extends Zend_Db_Table_Abstract {


 protected $_name = 'ratetable';

 protected $_referenceMap = array(
   'Scheme' => array(
   'columns' => array('scheme_id'),  
   'refColumns' => array('scheme_id'), 
   'refTableClass' => 'Scheme',  
  ),
 );
}

我如何获取每个方案及其相应的费率?

提前致谢。

1 个答案:

答案 0 :(得分:2)

请, 见DOCS:

http://framework.zend.com/manual/en/zend.db.table.relationships.html

获取相关行集

  

如果您有一个Row对象作为结果   您可以在父表上查询   从依赖表中获取行   引用当前行。使用   方法:

$row->findDependentRowset($table);
  

示例#4获取相关行集   使用魔法

     

此示例显示发现依赖   行集等同于   以前的例子。在这种情况下,   应用程序使用魔术方法   调用而不是指定   表和规则作为字符串。

  $accountsTable = new Accounts();
  $accountsRowset = $accountsTable->find(1234);
  $user1234 = $accountsRowset->current();

  // Use the default reference rule
  $bugsReportedBy = $user1234->findBugs();

  // Specify the reference rule
  $bugsAssignedTo = $user1234->findBugsByEngineer();

获取父行

  

如果您有一个Row对象作为结果   对于依赖表的查询,你   可以获取父级中的行   依赖行所指的。使用   方法:

$row->findParentRow($table);
  

此示例显示查找父行   相当于以前的那些   例子。在这种情况下,   应用程序使用魔术方法   调用而不是指定   表和规则作为字符串。

  $bugsTable = new Bugs();
  $bugsRowset = $bugsTable->fetchAll(array('bug_status = ?', 'NEW'));
  $bug1 = $bugsRowset->current();

  // Use the default reference rule
  $reporter = $bug1->findParentAccounts();

  // Specify the reference rule
  $engineer = $bug1->findParentAccountsByEngineer();