Laravel框架中Illuminate\Database\QueryException异常码23000是不是表示唯一索引字段重复?

我想在catch中只捕获23000的异常码,其他情况按照原来的样子抛出异常

try {
    # 保存数据库
} catch (\Exception $e) {
    if ($e->getCode() == 23000) {
        //订单号重复重新生成订单号,重新生成订单号并保存,不要玩文字游戏,没有公用的订单号生成系统,不用redis,我就问这种模式怎么实现!!!
        $order->order_no = $order_no;
        $order->save();
    } else {
        throw new $e;
    }
}
让PHP再次伟大
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

可以设置唯一索引的字段,然后插入相同的值。这样就可以打印出错误码了

1年前 评论
勇敢的心 (楼主) 1年前
看上隔壁小花了啦 (作者) 1年前
讨论数量: 14
       我是这样写的  
       catch (QueryException $e) {
            // 唯一索引错误,执行更新
            if (Arr::get($e->errorInfo, 1) === 1062) {

            }
        }
1年前 评论
勇敢的心 (楼主) 1年前
luyang (作者) 1年前
勇敢的心 (楼主) 1年前
勇敢的心 (楼主) 1年前
luyang (作者) 1年前
勇敢的心 (楼主) 1年前
sreio

为何不先查呢,查的开销总比写的开销小吧

1年前 评论
看上隔壁小花了啦 1年前
sreio (作者) 1年前

可以设置唯一索引的字段,然后插入相同的值。这样就可以打印出错误码了

1年前 评论
勇敢的心 (楼主) 1年前
看上隔壁小花了啦 (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!