Если я вызываю DB::beginTransaction()
в контроллере, но перенаправляю без вызова DB::rollBack()
, мои флеш-сообщения не появляются на новой странице.
Например, в корзине покупок я запускаю транзакцию, но перенаправляю на страницу платежа, когда платеж кредитной картой завершается неудачно. Ошибка оплаты не появляется, если я сначала не позвоню 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()
- это правильно, но я обнаружил эту проблему, когда писал код.