在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的所有記錄。