1

我想使用DBALException执行验证而不是显式检查条件。

例如,使用“删除限制”删除其子记录持有引用的父记录将违反完整性约束。这是当前在 MYSQL 中使用 Doctrine2 DBAL 和 mysql pdo 驱动程序。

我希望能够捕获 DBALException(到目前为止已成功)并立即确定发生了什么。

我不是要代码解决方案,而是要处理和规范化错误的学说的选项或扩展,一个简单的例子是:

catch(\Doctrine\DBAL\DBALException $e) {

    if($e->getPrevious()->getCode() == 23000) { // Integrity constraint violation
        /*
         * We know the type of problem; cannot delete parent record, 
         * or cannot create duplicate record.
         * But which one is it? And which child table was complaining?
         */
    }
}

这是使用 PDOException 和 SQLSTATE 错误代码来大致了解问题,但它不够具体,虽然它符合 ODBC,但不能保证适用于每个数据库。

我需要这个的原因是我不能为每个删除过程中的每个实体存在或将来存在的每个可能的引用编写验证代码。

自行关闭:

意识到这是错误的验证方式,不要在测试环境之外使用这个概念。

4

0 回答 0