Executando verificação de segurança...
1

[AJUDA] Laravel transactions

Gostaria de saber por que a reversão não funciona? Pelo que entendi, o usuário só deveria ser criado se não houvesse erro. Mas meu código atual cria o usuário mesmo que dê o erro simulado, alguém poderia me ajudar?


public function Teste() {

    DB::beginTransaction();

    try {
        $Cliente = Cliente::create([
            'Nome' => 'Teste',
            'Email' => '[email protected]',
            'CPF' => '12345678901',
            'Telefone' => '11999999999',
            'Data_de_Nascimento' => '1990-01-01',
            'Verificado' => true
        ]);

        throw new \Exception('Erro simulado');

        DB::commit();

        return 'Transação bem-sucedida';
    } catch (\Exception $e) {
        DB::rollBack();
        return 'Erro na transação: ' . $e->getMessage();
    }
}

Carregando publicação patrocinada...
2

Não responde a sua pergunta mas sugiro que não use beginTransaction.

Se em algum momento você esquecer o commit ou o rollback seu banco vai ficar inconsistente.

DB::transaction(function () {
    /// code
}, 5);

Dessa forma o commit e rollback são feitos automaticamente

1
0
1

se bem me lembro, os inserts são auto-commited no banco. tente criar um usuário, alterar alguma propriedade, salvar e estourar o erro pra ver se da o rollback.

0
0
1