2012-01-06 4 views
1

내가 이것을 알아 내기 위해 노력하고있어젠드 DB 캐스 케이 딩 표 A는 B의 부모입니다

나는 세 개의 테이블 (표 A, 표 B, 테이블 C)가 삭제와 B는 C를

의 부모

내가 제대로 내가 업데이트 할 때 너무/A에서 행을 말할 수 삭제

$_dependentTables & $_referenceMap appropriately 

을 설정하여 관계를 구축, B에서 해당 영향을받는 행이 업데이트 될 때 /도 삭제. 마찬가지로 B에서 행을 삭제하면 C에서 해당 행이 업데이트/삭제됩니다.

그러나 A에서 삭제하고 B 행이 삭제되면 C에서 삭제해야하는 행이 삭제되지 않습니다 !!!!!

젠드 캐스 케이 딩 기능이 전체 확장으로 계단식 연결을 지원하지 않거나 무엇인가 누락 되었기 때문에 이것이 발생 했습니까?

답변

1

Zend_Db_Table_Row::delete()을 호출 한 후 종속 테이블을 검색하고 Zend_Db_Table::_cascadeDelete()을 호출하기 때문에 하나의 관계를 넘어 계단식으로 연결되지 않는 주된 이유가 있습니다. _cascadeDelete()에서 where 절을 만들고 Zend_Db_Table::delete()을 사용하여 하나 이상의 레코드를 삭제합니다.

진정한 계단식 삭제를 허용하려면 _cascadeDelete()을 다시 써야 영향을받는 레코드의 행 집합을 검색하고 해당 집합을 반복하며 각 행에 delete()을 호출해야합니다.

관련 문제