как работать с транзакциями из фронтенда

Фронтенд на vue, бекенд на ларавеле. В беке сделал контроллер транзакций

 class TransactionsController
{

    public function beginTransaction()
    {
        DB::beginTransaction();
    }

    public function rollBack()
    {
        DB::rollBack();
    }

    public function commit()
    {
        DB::commit();
    }
}

Из фронта через axios вызываю метод beginTransaction, затем создаю несколько записей в разных таблицах с помощью соответствующих контроллеров. Вызываю rollBack. Отката не происходит. Насколько я понимаю это потому, что вызывается в разных сессиях. А хотелось бы. Подскажите как поступать в таких случаях.


Ответы (1 шт):

Автор решения: Ипатьев

Никак.
В разных сессиях никаких транзакций не может быть по определению.

Транзакция может быть реализована только в рамках одного и того же соединения с БД. То есть в рамках только одного запроса к бэкенду.

Как вариант можно копить данные в сессии и на самом последнем этапе выполнить в рамках транзакции.

Но сдается мне, что ты просто не понимаешь, что это такое и транзакция на самом деле здесь не нужна.

→ Ссылка