星期二, 5月 18, 2010

zend - 關連table

我也不知道怎麼做出來的
一開始明明就照著教學做
可是怎麼做都說有錯
什麼No reference rule \"$ruleKey\" from table $thisClass to table $tableClassname"
不然就什麼 No reference from table $thisClass to table $tableClassname"
說xx table裡找不到reference關係...

最後進到Zend/library/Db/Table/Abstract.php一步步查
先看建構子有存進去了
最後一路看到getReference()
因為會說沒有rule 所以就先把那段解註掉
if ($ruleKey !== null) {
...
}

再看foreach ($refMap as $reference)...這段
明明有哇... 再把註解全拿掉時...
神奇的事發生了...
一切的值都有了 也不會有例外
這... 到底發生什麼事了...= =?

過程中 我是有一直亂改值測試...
可是... 最後成功的值...應該是一樣的
嗯哉~~ 總之先記錄下來.... 免得又遇到了

說明
table "GroupTee"裡有teeid,需要跟table "Tee"的主鍵id做關連
table grouptee
<?php
class Application_Model_DbTable_GroupTee extends Zend_Db_Table_Abstract
{
protected $_name = 'group_tee_rt';
protected $_dependentTables = array('Application_Model_DbTable_Tee'); // 對應到關連的 Table Class
}


table tee
<?php
class Application_Model_DbTable_Tee extends Zend_Db_Table_Abstract
{
protected $_name = 'tee'; //real table name

protected $_referenceMap= array(
'TeeName' => array( //rule名稱
'columns' => array('id'), //tee的pky
'refTableClass' => 'Application_Model_DbTable_GroupTee', //參考GroupTee
'refColumns' => array('teeid') //GroupTee裡的teeid
)
);
}


contoller或應用的地方
$tbGroupTee = new Application_Model_DbTable_GroupTee();
$group = $tbGroupTee ->fetchRow('id=1'); //取得第1個group
$grouptee = $group->findDependentRowset('Application_Model_DbTable_Tee','TeeName');
Zend_Debug::dump($grouptee, $label = "grouptee", $echo = true);



References
初探 Zend_Db_Table Relationships
One To Many Relationship with Zend Framework

沒有留言: