как работать с транзакциями из фронтенда
Фронтенд на vue, бекенд на ларавеле. В беке сделал контроллер транзакций
class TransactionsController
{
public function beginTransaction()
{
DB::beginTransaction();
}
public function rollBack()
{
DB::rollBack();
}
public function commit()
{
DB::commit();
}
}
Из фронта через axios вызываю метод beginTransaction, затем создаю несколько записей в разных таблицах с помощью соответствующих контроллеров. Вызываю rollBack. Отката не происходит. Насколько я понимаю это потому, что вызывается в разных сессиях. А хотелось бы. Подскажите как поступать в таких случаях.
Ответы (1 шт):
Никак.
В разных сессиях никаких транзакций не может быть по определению.
Транзакция может быть реализована только в рамках одного и того же соединения с БД. То есть в рамках только одного запроса к бэкенду.
Как вариант можно копить данные в сессии и на самом последнем этапе выполнить в рамках транзакции.
Но сдается мне, что ты просто не понимаешь, что это такое и транзакция на самом деле здесь не нужна.