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.