gui*_*sen 14 php exception-handling laravel laravel-4
我很好奇是否有办法在删除或将记录插入数据库时检查是否存在约束违规错误.
抛出的异常称为"QueryException",但这可能是一系列错误.如果我们可以检查异常特定错误是什么会很好.
Raz*_*zor 32
你正在寻找23000 Error code (Integrity Constraint Violation)
.如果您看一下QueryException
类,它会从中扩展PDOException
,因此您可以访问$errorInfo
变量.
要捕获此错误,您可以尝试:
try {
// ...
} catch (\Illuminate\Database\QueryException $e) {
var_dump($e->errorInfo);
}
// Example output from MySQL
array (size=3)
0 => string '23000' (length=5)
1 => int 1452
2 => string 'Cannot add or update a child row: a foreign key constraint fails (...)'
Run Code Online (Sandbox Code Playgroud)
更具体(重复条目,非空,添加/更新子行,删除父行...),这取决于每个DBMS:
SQLSTATE
代码约定,因此您可以从数组返回第一个值$e->errorInfo[0]
或$e->getCode()
直接调用$e->errorInfo[1]
对于laravel,处理错误很容易,只需在"app/start/global.php"文件中添加此代码(或创建服务提供者):
App::error(function(\Illuminate\Database\QueryException $exception)
{
$error = $exception->errorInfo;
// add your business logic
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17974 次 |
最近记录: |