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.