我正在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',
),
);
}
我如何获取每个方案及其相应的费率?
提前致谢。
答案 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();