laravel 8 ORM 观察者Observer 事务回滚怎么检测。

1. 运行环境

linux mysql8

1). 当前使用的 Laravel 版本?

laravel8.2

2). 当前使用的 php/php-fpm 版本?

php7.4.26
PHP 版本:

2. 问题描述?

我想 通过 Observer 观察者,监控模型操作,来同步 elasticsearch 和 redis

但是现在 事务被回滚 。观察者却执行了。
[//]: <> (代码问题的话,请提供一份最短的,可复现问题的代码。或者相关代码)

        DB::beginTransaction();
        try {
            //批量观察数据
            $InventoryGoodsSku = InventoryGoodsSku::where('sku_id','494796')->get(); 

            $InventoryGoodsSku->each(function ($sku) {
                $sku->pre_exit_stock = 2;

                $sku->save();
            });

            throw new LogicException('202',"订单已经配货");

            DB::commit();

            return '777';
        } catch (\Exception $exception) {
            DB::rollBack();
            throw $exception;
        }

3. 您期望得到的结果?

请问有更好的方法同步数据嘛?或者 我获取到事务失败的信息,或者 观察者能知道过来的数据没有被提交

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10
1年前 评论
Black_Koi (楼主) 1年前

提交了你为什么要 return 777 回滚了才是7的意志。

1年前 评论
Black_Koi (楼主) 1年前
1年前 评论
cccdz (作者) 1年前
周小云 1年前

你在观察者里开没开启事务,我之前测过观察者里也开启事务后,外层事务失败回滚会让观察者里的事务操作也会滚

1年前 评论

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