Yii框架在代码层进行级联删除

数据库表里使用了外键并且使用了Restrict模式,导致删除一张表的记录时,因为外键和其他表关联起来了,导致无法删除,需要把关联表的记录同时也删除了才可以操作目标表记录的删除操作。

第一步:重写beforeDelete()
在Model里,重写beforeDelete(),然后在该方法的最后一行return parent::beforeDelete();即可
当然与beforeDelete方法对应的afterDelete方法也能做其他事情。
充分发挥before和after的作用吧

1
2
3
4
5
6
7
8
9
class D {
public function beforeDelete() {
$id = $this->id;;
A::deleteAll(['id'=>$id]);//级联删除
B::deleteAll(['id'=>$id]);
C::deleteAll(['id'=>$id]);
return parent::beforeDelete();
}
}