Laravel: Transações de banco de dados (Database Transactions)

No desenvolvimento de sistemas mais complexos, onde são feitas adições e/ou atualizações de registros em varias tabelas durante uma rotina, para evitar registros órfãos e inconsistência de informações no banco de dados, é importante trabalhar com transações.

Transações em banco de dados (Database Transactions) nada mais é que informar pro sistema de gerenciamento, que ele deve testar e guardar todas as operações que devem ser executadas no final da rotina, desta forma caso não ocorra nenhum erro, é possível efetivá-las, ou caso contrario, cancelar todas facilmente.

No Laravel é muito simples, como a seguir.

<?php

namespace App\Helpers;

use App\User;
use App\Profile;

class UserProfileHelper
{
  public static function create($name, $profession)
  {
    try {

      // Inicia transação com banco de dados
      \DB::beginTransaction();

      $user = new User()
      $user->name = $name;
      $user->save();

      $profile = new Profile();
      $profile->user = $user->id;
      $profile->profession = $profession;
      $profile->save();
      
      // Efetiva todas as operações
      \DB::commit();

      return true;

    } catch (exception $e) {

      // Cancela todas as operações em caso de erro
      \DB::rollback();

      return false;
    }
  }
}

?>

Espero ter ajudado.