chelkaz
@chelkaz

Верна ли логика для зависимой записи моделей с откатом данных?

У меня есть событие для сохранение нескольких моделей, и если где то, что-то не сохранится, то нужно отменить все что было сохранено. По сути это один процесс, но запись зависящих моделей. Я написал такую логику с таким кодом, хотелось бы услышать мнение, верно ли я написал с течки зрения опытных программистов.
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();
        }
    }
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы