1

如果我调用DB::beginTransaction()控制器但没有DB::rollBack()先调用就重定向,我的 Flash 消息不会出现在新页面上。

例如,在购物车中,我开始交易,但在信用卡支付失败时重定向到支付页面。除非我先打电话,否则不会出现付款错误DB::rollBack()

这发生在 Laravel 5.7 和 5.8 上。

重现步骤:

这失败了:

DB::beginTransaction();

return redirect("/checkout/payment")->withInput($request->all())->withFlashDanger("Credit Card Number is required.");

这有效:

DB::beginTransaction();

DB::rollBack();

return redirect("/checkout/payment")->withInput($request->all())->withFlashDanger("Credit Card Number is required.");

我认为这是一个错误,因为文档中没有关于数据库事务和闪存消息之间的任何关联。我知道添加rollBack()呼叫有效,但我不知道这是否是意图。

显然,调用rollBack()是正确的做法,但我在编写代码时发现了这个问题。

4

0 回答 0