Laravel的事务处理求解.

发布于 2022-09-01 20:57:59 字数 527 浏览 29 评论 0

public function store(Request $request, $id)
{
    $externalAccount = ExternalAccounts::find($id);
    DB::beginTransaction();
    try {
        $externalAccount->fund_number = 999;
        $externalAccount->capital_balance = 'kjhkjhkj';
        $externalAccount->save();
        DB::commit();
    } catch (Exception $e){
       DB::rollback();
       throw $e;
    }
}

第一次用Laravel。。
capital_balance字段为int类型,我故意传进去字符串类型,这样写入肯定会出错的。
但是上面的fund_number居然写入成功了,没有回滚= =。。
求老司机解答。。
mysql引擎没错,是InnoDB。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

黑凤梨 2022-09-08 20:57:59

我估计是mysql的坑,你拿生成好的sql直接到mysql里面去执行一下看看

柏林苍穹下 2022-09-08 20:57:59

mysql 严格模式和非严格模式的区别,你新写入的数据capital_number字段为0 或者空?

满栀 2022-09-08 20:57:59

Laravel框架已经重写了各种exception异常处理类

事务提交的异常处理类为IlluminateDatabaseQueryException,所以用exception类是捕获不到事务提交错误的异常的

    try {}
    } catch (\Illuminate\Database\QueryException $e) {
        // var_dump($e);
    }
    

这样才能捕获到

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文