У меня есть код, который вставляет данные в несколько таблиц по очереди, который выглядит так:
$em->getConnection()->beginTransaction();
try {
$em->flush();
try {
/** @var \AppBundle\Entity\Warehouse $warehouse */
$warehouse = $this->warehouseRepository->getRepository()->findOneBy([
'boxType' => $boxType,
'status' => Warehouse::STATUS_FREE
]);
$oldStatus = $warehouse->getStatus();
$warehouse->setStatus(Warehouse::STATUS_BUSY);
$this->warehouseStatusManager->change($warehouse, $oldStatus);
$em->flush();
try {
$order = new Order();
$order->setUser($this->getUser());
$order->addWarehouse($warehouse);
$order->setRentFrom(\DateTime::createFromFormat('d/m/Y', $formData['rentFrom']));
$em->persist($order);
$em->flush();
$em->getConnection()->commit();
return Response::create('ok');
} catch (\Exception $exception) {
return Response::create('Can not save order. Aborted');
}
} catch (\Exception $exception) {
return Response::create('Can not proceed warehouse data');
}
} catch (\Exception $exception) {
$em->getConnection()->rollBack();
return Response::create('Can not save address');
}
вопрос в том, нужно ли мне выполнять метод `$em->getConnection()->rollBack();` в каждом блоке трай-кетч или хватит того, как я сделал?