删除yii2中的相关记录 - 最佳实践

时间:2015-05-27 13:28:15

标签: mysql database activerecord yii2 yii2-advanced-app

我的数据库使用了 MyISAM 引擎,因此我无法调用级联删除操作,因为 MyISAM 不支持它。同时,我想在我的yii2应用程序中删除相关记录。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。

1)在数据库端创建trigger

CREATE TRIGGER trigger_name
BEFORE DELETE ON table_name FOR EACH ROW

BEGIN    
   -- variable declarations    
   -- trigger code    
END;

2)删除yii2 beforeDelete函数内的相关记录:

public function beforeDelete() {
    if (!parent::beforeDelete()) {
        return false;
    }
    // ... custom code here ...
    return true;
}

触发器更快,并且善于强制引用完整性,这就是我选择它们的原因。

答案 1 :(得分:1)

注意:以下解决方案仅在您使用ActiveRecord delete method时有效。

您可以使用beforeDelete方法删除相关记录 - 在这种情况下,您只需编写一次代码,并在每次调用$model->delete()时执行。

或者您可以向EVENT_BEFORE_DELETE事件添加处理程序。