2012-01-06 34 views
1

我試圖弄清楚這一點,Zend的Db的級聯刪除

我有三個表(表A,表B,表C)表 A是B的父,並且B是C.

的父

我建立的關係,正確設置

$_dependentTables & $_referenceMap appropriately 

所以當我更新/刪除讓說從A行,B中的相應影響的行被更新/刪除。同樣,如果我從B中刪除一行,則C中相應的受影響行將被更新/刪除。

但是,如果我從一個刪除和B中的行被刪除,應該在C刪除的行不會被刪除!!!!!

這是因爲Zend的級聯功能不支持級聯到充分伸展還是我失去了一些東西?

回答

1

它不會超越一個關係級聯的主要原因是因爲在調用Zend_Db_Table_Row::delete()後,它將檢索相關表並調用Zend_Db_Table::_cascadeDelete()。在_cascadeDelete()這將建立一個WHERE子句和使用Zend_Db_Table::delete()刪除一個或多個記錄。

要允許真正的級聯刪除,您應該重寫_cascadeDelete()以首先檢索受影響記錄的行集,循環訪問集並在每行上調用delete()