Мне нужны идеи для решения проблемы, когда есть заказ, который нужно обновить, и платежи, которые будут созданы для этого заказа.Но если зарядка заказа не удалась.Обновления, внесенные в заказ, должны быть отменены, но созданные для него платежи должны сохраняться.
Пример кода контроллера:
$order = Order::find(1);
DB::beginTransaction();
try {
$order->update(['status' => 1]);
chargeOrder ($order);
} catch (PaymentErrorException $e) {
DB::rollback();
throw $e;
}
catch (\Exception $e) {
DB::rollback();
throw $e;
}
DB::commit();
Пример функции, которая выполняет начисление заказа:
function chargeOrder( $order ) {
$payments_service->charge($order);
$order->payments()->create( new Payment() );
}
Что мне нужно, так это то, что когда возникает исключение PaymentErrorException, следует отменять только $ order-> update (), но изменения, сделанные внутри функции chargeOrder, должны сохраняться.