У меня есть событие для сохранение нескольких моделей, и если где то, что-то не сохранится, то нужно отменить все что было сохранено. По сути это один процесс, но запись зависящих моделей. Я написал такую логику с таким кодом, хотелось бы услышать мнение, верно ли я написал с течки зрения опытных программистов.
public function handle(Add $new)
{
// Начинаю транзакцию, в данном случае,
// Если что то не так, я могу откатить
DB::beginTransaction();
// Ставлю флаг false для отката всего
$success = false;
try {
$new_arr = $new->new;
$loc_id = $new_arr['loc_id'];
// Записываю первую модель
$Item = new Item;
$Item->loc_id = $loc_id;
// Если записана иду к следующей
if ($Item->save())
{
$Item_detail = new ItemDetail();
$Item_detail->Item_id = $Item->id;
// Если записана иду к следующей
if ($Item_detail->save())
{
$count = DB::table('Items')->where('loc_id', $loc_id)->count();
$localities = DB::table('localities')->where('loc_id', $loc_id)->update(['c_Items' => $count]);
// Если записана, ставлю флаг true для пост записи всего
if ($localities)
{
$success = true;
}
}
}
} catch (\Exception $e) {
// Откат если что-то не так
DB::rollback();
}
if ($success) {
// Если ОК, делаю запись всего что с верху
DB::commit();
}
else
{
// Откат если не ОК
DB::rollback();
}
}