如果模型具有外键,则阻止删除的可能性

时间:2016-02-29 15:45:55

标签: php foreign-keys yii2 relationship

嗨,我有与自己有关的模特。我可以在这张桌子上展示我的关系: enter image description here

这个

  

REL_CATEGORY

与此

相同
  

编号

。这是类别和子类别的表格。如果模型有外键,我想阻止删除的可能性。当用户想要删除Rel_Category中的foreign_key类别时,抛出一些异常或flash。因此,如果用户想要删除id = 54的测试,那么它应该显示一些错误,该类别具有子类别,用户应首先删除此子类别(id = 51和id = 53)。  更新: 在我的数据库中,我没有删除和更新的操作 enter image description here

2 个答案:

答案 0 :(得分:1)

您应该在数据库中处理此问题,并且可以在控制器中尝试:

if (count($model->smCategories)) {
    Yii::app()->user->setFlash('error', 'This category has sub categories and cannot be deleted.');
} else {
    $model->delete();
}

答案 1 :(得分:0)

您应该在创建数据库表时定义此类约束:

CREATE TABLE `Category` (         
    ...

    CONSTRAINT `SelfReference` FOREIGN KEY (`Rel_Category`) REFERENCES `Category` (`Id`) ON DELETE RESTRICT ON UPDATE CASCADE
    ....
);

http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html

这里的想法是MySQL将维护您的数据完整性约束。