我在Zf2中有一个简单的项目。我正在使用MySql数据库。 我在数据库中有以下表格。
1。省
2。地区:它取决于 provinces 表。即,各省表的id是此表中的外键。
第3。城市:它取决于区域表。即,区表的id是此表中的外键。
我想删除父表中的数据时从依赖表中删除所有相关数据。如,
1.当省表中的数据被删除时,应删除区和城市表中的数据。
我在 Project_Name \ module \ Module_Name \ src \ Module_Name \ Model
中各自的表中都有函数 例如,删除省的功能是: public function deleteProvinces($id)
{
$this->tableGateway->delete(array('id' => (int) $id));
}
$ id 是要删除的省份ID。
删除区的功能是:
public function deleteDistricts($id)
{
$this->tableGateway->delete(array('id' => (int) $id));
}
$ id 是要删除的地区的ID。
删除城市的功能是:
public function deleteCities($id)
{
$this->tableGateway->delete(array('id' => (int) $id));
}
$ id 是要删除的城市ID。
我想了很多,但没有找到解决方案。 任何想法或建议都非常感激。提前谢谢。
答案 0 :(得分:2)
您可以使用MySQL ON DELETE CASCADE
参考行动。
请参阅MySQL docs
中的参考操作答案 1 :(得分:1)
如果需要,使用应用程序提供的服务,在本例中为MySql创建表时,可以添加FK约束ON DELETE CASCADE。这项工作比删除依赖表中的各个行
快得多当行数开始增加时,我在使用ON DELETE CASCADE时看到了多倍性能提升
区域表的约束
CONSTRAINT `provinces_district` FOREIGN KEY (`provinces_id`) REFERENCES `provinces` (`id`) ON UPDATE NO ACTION ON DELETE CASCADE
城市表的约束
CONSTRAINT `district_cities` FOREIGN KEY (`district_id`) REFERENCES `districts` (`id`) ON UPDATE NO ACTION ON DELETE CASCADE