class Transaction
Same name in this branch
- 11.x core/tests/fixtures/database_drivers/module/core_fake/src/Driver/Database/CoreFakeWithAllCustomClasses/Transaction.php \Drupal\core_fake\Driver\Database\CoreFakeWithAllCustomClasses\Transaction
Same name in other branches
- 9 core/tests/fixtures/database_drivers/module/corefake/src/Driver/Database/corefakeWithAllCustomClasses/Transaction.php \Drupal\corefake\Driver\Database\corefakeWithAllCustomClasses\Transaction
- 9 core/lib/Drupal/Core/Database/Transaction.php \Drupal\Core\Database\Transaction
- 8.9.x core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestMysql/Transaction.php \Drupal\driver_test\Driver\Database\DrivertestMysql\Transaction
- 8.9.x core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestPgsql/Transaction.php \Drupal\driver_test\Driver\Database\DrivertestPgsql\Transaction
- 8.9.x core/lib/Drupal/Core/Database/Driver/sqlite/Transaction.php \Drupal\Core\Database\Driver\sqlite\Transaction
- 8.9.x core/lib/Drupal/Core/Database/Driver/mysql/Transaction.php \Drupal\Core\Database\Driver\mysql\Transaction
- 8.9.x core/lib/Drupal/Core/Database/Driver/pgsql/Transaction.php \Drupal\Core\Database\Driver\pgsql\Transaction
- 8.9.x core/lib/Drupal/Core/Database/Transaction.php \Drupal\Core\Database\Transaction
- 10 core/tests/fixtures/database_drivers/module/core_fake/src/Driver/Database/CoreFakeWithAllCustomClasses/Transaction.php \Drupal\core_fake\Driver\Database\CoreFakeWithAllCustomClasses\Transaction
- 10 core/lib/Drupal/Core/Database/Transaction.php \Drupal\Core\Database\Transaction
A wrapper class for creating and managing database transactions.
To begin a transaction, simply start it. When the object goes out of scope and is destroyed it will automatically commit.
In the vast majority of cases, you should not instantiate this class directly. Instead, call ->startTransaction(), from the appropriate connection object.
Hierarchy
- class \Drupal\Core\Database\Transaction
Expanded class hierarchy of Transaction
See also
\Drupal\Core\Database\Connection::startTransaction()
5 files declare their use of Transaction
- Connection.php in core/
tests/ fixtures/ database_drivers/ custom/ fake/ Connection.php - DriverSpecificTransactionTestBase.php in core/
tests/ Drupal/ KernelTests/ Core/ Database/ DriverSpecificTransactionTestBase.php - Transaction.php in core/
tests/ fixtures/ database_drivers/ module/ core_fake/ src/ Driver/ Database/ CoreFakeWithAllCustomClasses/ Transaction.php - TransactionManagerBase.php in core/
lib/ Drupal/ Core/ Database/ Transaction/ TransactionManagerBase.php - TransactionManagerInterface.php in core/
lib/ Drupal/ Core/ Database/ Transaction/ TransactionManagerInterface.php
1 string reference to 'Transaction'
- ConnectionTest::providerGetDriverClass in core/
tests/ Drupal/ Tests/ Core/ Database/ ConnectionTest.php - Data provider for testGetDriverClass().
File
-
core/
lib/ Drupal/ Core/ Database/ Transaction.php, line 17
Namespace
Drupal\Core\DatabaseView source
class Transaction {
public function __construct(Connection $connection, string $name, string $id) {
// Transactions rely on objects being destroyed in order to be committed.
// PHP makes no guarantee about the order in which objects are destroyed so
// ensure all transactions are committed on shutdown.
Database::commitAllOnShutdown();
}
/**
* Destructs the object.
*
* Depending on the nesting level of the object, this leads to a COMMIT (for
* a root item) or to a RELEASE SAVEPOINT (for a savepoint item) executed on
* the database.
*/
public function __destruct() {
$this->connection
->transactionManager()
->unpile($this->name, $this->id);
}
/**
* Retrieves the name of the transaction or savepoint.
*/
public function name() {
return $this->name;
}
/**
* Rolls back the current transaction.
*
* This is just a wrapper method to rollback whatever transaction stack we are
* currently in, which is managed by the TransactionManager. Note that logging
* needs to happen after a transaction has been rolled back or the log
* messages will be rolled back too.
*
* Depending on the nesting level of the object, this leads to a ROLLBACK (for
* a root item) or to a ROLLBACK TO SAVEPOINT (for a savepoint item) executed
* on the database.
*/
public function rollBack() {
$this->connection
->transactionManager()
->rollback($this->name, $this->id);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
Transaction::name | public | function | Retrieves the name of the transaction or savepoint. |
Transaction::rollBack | public | function | Rolls back the current transaction. |
Transaction::__construct | public | function | |
Transaction::__destruct | public | function | Destructs the object. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.