我在试着解决这个问题,
我有三个表(表A、表B、表C)表A是B的父表,B是C的父表。
我通过设置设置正确地建立了关系
$_dependentTables & $_referenceMap appropriately
因此,当我更新/删除A中的一行时,B中相应的受影响行也会被更新/删除。类似地,如果我从B中删除一行,C中相应的受影响行也会被更新/删除。
但是,如果我从A中删除,而B中的行被删除,则C中应该删除的行不会被删除!
这是因为zend的级联特性不支持完全的级联,还是我遗漏了什么?
发布于 2012-01-06 22:52:55
它没有级联到一个关系之外的主要原因是,在调用Zend_Db_Table_Row::delete()
之后,它将检索依赖表并调用Zend_Db_Table::_cascadeDelete()
。在_cascadeDelete()
中,它将构建一个where子句,并使用Zend_Db_Table::delete()
删除一条或多条记录。
要允许真正的级联删除,您应该重写_cascadeDelete()
以首先检索受影响的记录的行集,遍历该集并对每一行调用delete()
。
https://stackoverflow.com/questions/8761537
复制相似问题