Laravel 4 DB транзакции не фиксируются и откатываются - PullRequest
0 голосов
/ 02 января 2019

Я использую laravel 4 и пытаюсь использовать функции фиксации и отката . Но функции не работают для меня.

Я слежу за документацией Laravel (https://laravel.com/docs/4.2/database#database-transactions), но все еще не работает.

Вот мой код:

DB::transaction(function() use ($product)
 {
     DB::table('products')->insert($product);           
     DB::rollBack();
 });

Создание новой записи в таблице товаров. что не так.

1 Ответ

0 голосов
/ 02 января 2019

В вашем примере транзакция будет откатываться только при наличии исключения.

Примечание. Любое исключение, возникающее при закрытии транзакции, приведет к автоматическому откату транзакции.

Вы должны вручную начать транзакцию с DB::beginTransaction() и завершить ее с DB::rollback() или DB::commit()

Это также возможно сделать в операторе try catch.

try {
    DB::beginTransaction();

    // Do something

    DB::commit();
} catch (\Exception $e) {
    DB::rollback();
    throw $e;
}
...