Zend Db级联删除

时间:2012-01-06 17:04:02

标签: database zend-framework cascading-deletes

我想弄清楚这一点,

我有三张桌子(表A,表B,表C) 表A是B的母体,B是C的母体。

我通过设置

来正确建立关系
$_dependentTables & $_referenceMap appropriately

所以当我更新/删除时,让我们说A中的一行,B中相应的受影响的行也会被更新/删除。同样,如果我从B中删除一行,C中相应的受影响行将被更新/删除。

但是,如果我从A中删除,并且B中的行被删除,那么应该在C中删除的行不会被删除!!!!!

这是因为zend级联功能不支持级联到完全扩展还是我遗漏了什么?

1 个答案:

答案 0 :(得分:1)

它不会超越一个关系的主要原因是因为在调用Zend_Db_Table_Row::delete()之后,它将检索从属表并调用Zend_Db_Table::_cascadeDelete()。在_cascadeDelete()内,它将构建一个where子句并使用Zend_Db_Table::delete()删除一个或多个记录。

要允许真正的级联删除,您应该重写_cascadeDelete()以首先检索受影响记录的行集,遍历该集并在每行上调用delete()