Answer the question
In order to leave comments, you need to log in
Is the logic correct for dependent-writing models with data backtracking?
I have an event for saving several models, and if somewhere, something is not saved, then you need to cancel everything that was saved. In fact, this is one process, but the recording of dependent models. I wrote such logic with such code, I would like to hear an opinion whether I wrote it correctly from the point of view of experienced programmers.
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();
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question