我想使用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,但不能保证每个数据库的工作。
我需要这个的原因是我不能为每个删除过程中每个实体存在或将来存在的每个可能的引用编写验证代码。
自我关闭:
意识到这是一种错误的验证方式,不要在测试环境之外使用这个概念。