我想弄清楚这一点,
我有三张桌子(表A,表B,表C) 表A是B的母体,B是C的母体。
我通过设置
来正确建立关系$_dependentTables & $_referenceMap appropriately
所以当我更新/删除时,让我们说A中的一行,B中相应的受影响的行也会被更新/删除。同样,如果我从B中删除一行,C中相应的受影响行将被更新/删除。
但是,如果我从A中删除,并且B中的行被删除,那么应该在C中删除的行不会被删除!!!!!
这是因为zend级联功能不支持级联到完全扩展还是我遗漏了什么?
答案 0 :(得分:1)
它不会超越一个关系的主要原因是因为在调用Zend_Db_Table_Row::delete()
之后,它将检索从属表并调用Zend_Db_Table::_cascadeDelete()
。在_cascadeDelete()
内,它将构建一个where子句并使用Zend_Db_Table::delete()
删除一个或多个记录。
要允许真正的级联删除,您应该重写_cascadeDelete()
以首先检索受影响记录的行集,遍历该集并在每行上调用delete()
。