Метод isTransactionActive
Метод isTransactionActive класса Connection возвращает булево значение,
указывающее на то, открыта ли транзакция в данный момент.
Метод не принимает параметров и возвращает true, если транзакция активна,
и false в противном случае. Метод удобно использовать
для проверки состояния соединения перед вызовом commit
или rollBack.
Синтаксис
public function isTransactionActive(): bool
Пример
Давайте проверим состояние транзакции до и после её открытия:
<?php
namespace AppController;
use DoctrineDBALConnection;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$res = $connection->isTransactionActive();
var_dump($res);
$connection->beginTransaction();
$res = $connection->isTransactionActive();
var_dump($res);
$connection->rollBack();
return new Response('ok');
}
}
?>
Результат выполнения кода:
bool(false)
bool(true)
Пример
Давайте выполним вставку данных, проверив, что транзакция активна, и откатим её при необходимости:
<?php
namespace AppController;
use DoctrineDBALConnection;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$connection->beginTransaction();
$connection->executeStatement(
'INSERT INTO article (title) VALUES (?)',
['article']
);
if ($connection->isTransactionActive()) {
$connection->commit();
}
return new Response('inserted');
}
}
?>
Результат выполнения кода:
"inserted"
Смотрите также
-
класс
Connection,
который управляет соединением с базой данных -
метод
beginTransaction,
который открывает новую транзакцию -
метод
commit,
который фиксирует текущую транзакцию -
метод
rollBack,
который откатывает текущую транзакцию