gpt4 book ai didi

php - Laravel 检查是否违反约束

转载 作者:IT王子 更新时间:2023-10-29 00:09:05 24 4
gpt4 key购买 nike

我很好奇是否有一种方法可以检查在数据库中删除或插入记录时是否存在约束违反错误。

抛出的异常称为“QueryException”,但这可能是范围广泛的错误。如果我们可以在异常中检查具体的错误是什么,那就太好了。

最佳答案

您正在寻找 23000 错误代码(违反完整性约束)。如果你看一下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 (...)'

更具体地说(重复条目,不为空,添加/更新子行,删除父行...),这取决于每个 DBMS:

  • PostgreSQLSQL server遵循 SQL 标准对 SQLSTATE 代码的约定,因此您可以返回数组 $e->errorInfo[0] 中的第一个值或调用 $e->getCode()直接
  • MySQL , MariaDBSQLite没有严格遵守规则,所以需要返回数组$e->errorInfo[1]
  • 中的第二个值

对于 laravel,处理错误很容易,只需将此代码添加到您的“app/start/global.php”文件(或创建一个 service provider):

App::error(function(\Illuminate\Database\QueryException $exception)
{
$error = $exception->errorInfo;
// add your business logic
});

关于php - Laravel 检查是否违反约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26363271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com