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 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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

1年前 评论
勇敢的心 (楼主) 1年前
看上隔壁小花了啦 (作者) 1年前
讨论数量: 14
sreio

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

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

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

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

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

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