Yii 框架 2.0 防止删除任何 id 被用作外键的记录


Yii Framework 2.0 prevent deleting any record whom id is being used as a foreign key

我有一个关系数据库,一个表中的记录ID在其他关系表中用作外键。我有一个删除操作。当然,我想防止删除 id 在另一个表中用作外键的任何记录。我的解决方案是按要删除的记录的 id 逐个查找所有关系表中的记录。如果根本找不到任何内容,则允许将其删除。但是此解决方案效率不高,因为您需要在所有关系表中逐个查找记录。

当然,MySQL有一些关系限制,例如删除限制或无操作。但是,当我删除在另一个表中使用 id 的记录时,我会收到一些我不想显示的源代码的错误消息。我尝试使用尝试捕获如下,但它不起作用。

$model= $this->findModel($id);
try {
     $model->delete();
} catch(Exception $e) {
     throw new 'yii'web'ForbiddenHttpException('Could not delete this record.' . $e);
}

但是尝试捕捉对我不起作用。是否有任何其他解决方案来检查记录的 id 是否正在其他关系表中使用?我正在使用 Yii 框架 2.0

你应该简单地抓住IntegrityException

$model= $this->findModel($id);
try {
     $model->delete();
} catch('yii'db'IntegrityException $e) {
     throw new 'yii'web'ForbiddenHttpException('Could not delete this record.' . $e);
}