在ThinkPHP中,可以使用delete
方法进行多个级联删除。
假设有如下的数据表关系:
-
表A对应模型
ModelA
,有主键id
。 -
表B对应模型
ModelB
,有外键a_id
,关联到表A的主键id
。 -
表C对应模型
ModelC
,有外键b_id
,关联到表B的主键id
。
要实现多个级联删除,可以按照以下步骤进行操作:
- 首先,在模型
ModelA
中定义与表B的一对多关联方法b()
,如下所示:
public function b() { return $this->hasMany('ModelB', 'a_id'); }
- 然后,在模型
ModelB
中定义与表C的一对多关联方法c()
,如下所示:
public function c() { return $this->hasMany('ModelC', 'b_id'); }
- 最后,使用
delete
方法进行级联删除,如下所示:
$modelA = ModelA::get($id); $modelA->b()->delete();
上述代码将删除表A的指定记录及其关联的表B的所有记录。
如果需要删除表A的指定记录及其关联的表B的所有记录及其关联的表C的所有记录,可以继续调用c()
方法进行删除,如下所示:
$modelA = ModelA::get($id); $modelA->b()->c()->delete();
上述代码将删除表A的指定记录及其关联的表B的所有记录及其关联的表C的所有记录。