【发布时间】:2012-02-20 17:35:19
【问题描述】:
我使用默认的 Zend_Db_Table_Abstract 来设置关系。这些是我的模型:
Model_Table_Project:
protected $_name = 'projects';
protected $_dependentTables = array('Model_Table_ProjectStage');
protected $_referenceMap = array(
'User' => array(
'columns' => 'userId',
'refTableClass' => 'Model_Table_User',
'refColumns' => 'id'
)
);
public function deleteProject($id)
{
$row = $this->find($id)->current();
if ($row)
{
$row->delete();
}
else
{
throw new Zend_Exception('Cannot delete project.');
}
}
Model_Table_Stage:
protected $_name = 'stages';
protected $_dependentTables = array('Model_Table_ProjectStage');
Model_Table_ProjectStage:
protected $_name = 'projectstage';
protected $_referenceMap = array(
'Project' => array(
'columns' => 'projectId',
'refTableClass' => 'Model_Table_Project',
'refColumns' => 'id',
'onDelete' => self::CASCADE,
),
'Stage' => array(
'columns' => 'stageId',
'refTableClass' => 'Model_Table_Stage',
'refColumns' => 'id',
'onDelete' => self::CASCADE,
)
);
现在,当我想删除一个项目时,使用 Model_Table_Project 中的 deleteProject() 方法,它会删除 Project 表中的条目和 ProjectStage 表中的条目,但不会删除 Stage 表中的条目。
我做错了什么?
【问题讨论】:
标签: many-to-many cascade zend-db-table cascading-deletes