若您的數據庫有內置級聯操作,那麼以下內容就不用看了,若您使用的是MySQL,同時數據表類型又是MyISAM,那麼您可以繼續往下看了。
Zend_Db_Table_Abstract 提供了級聯功能,但是很不幸只有當關鏈表的主鍵(Primary Key)發生變化時才會進行相關級聯,若我有A和B兩個表,A表是主要信息,B表是詳細信息,那麼如果要同時更新A和B表的非主鍵內容,很遺憾,Zend 不提供相關操作,只能自己擴充了,方法其實很簡單,我們下面慢慢來分析。
主表:
class TableA extends Zend_Db_Table_Abstract protected $_name = 'table_a';//數據表名稱
protected $_rowClass = 'TableARow';//數據表的RowClass名稱
protected $_dependentTables = array('TableB');//子關系表的類名
}
class TableB extends Zend_Db_Table_Abstract protected $_name = 'table_b';
protected $_referenceMap = array(
'TableA' => array(
'columns' => array('id'),//和主表的關聯鍵
'refTableClass' => 'TableA',//主表的類名
'refColumns' => array('id'),//主表的主鍵
'onUpdate' => self::CASCADE,//更新主表記錄時是否更新關聯記錄
'onDelete' => self::CASCADE//刪除主表記錄時是否更新關聯記錄 }
class TableARow extends Zend_Db_Table_Row_Abstract protected function _update() $objTableBRowset = $this->findDependentRowset('TableB');
//這裡開始寫table_b表的處理方式 }