Класс yii\db\Transaction
| Наследование | yii\db\Transaction » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступна с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/db/Transaction.php |
Transaction представляет транзакцию БД.
Обычно создается путем вызова yii\db\Connection::beginTransaction().
Следующий код — типичный пример использования транзакций (обратите внимание, что некоторые СУБД могут не поддерживать транзакции):
$transaction = $connection->beginTransaction();
try {
$connection->createCommand($sql1)->execute();
$connection->createCommand($sql2)->execute();
//.... other SQL executions
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
} catch (\Throwable $e) {
$transaction->rollBack();
throw $e;
}
Примечание: в приведенном выше коде у нас есть два блока catch для совместимости с PHP 5.x и PHP 7.x.
\Exceptionреализует\Throwableинтерфейс начиная с PHP 7.0, поэтому вы можете пропустить часть с\Exceptionесли ваше приложение использует только PHP 7.0 и выше.
Открытые свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $db | yii\db\Connection | Подключение к базе данных, с которым связана эта транзакция. | yii\db\Transaction |
| $isActive | boolean | Активна ли эта транзакция. | yii\db\Transaction |
| $isolationLevel | string | Уровень изоляции транзакции для этой транзакции. | yii\db\Transaction |
| $level | integer | Текущий уровень вложенности транзакции. | yii\db\Transaction |
Открытые методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т. е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| begin() | Начинает транзакцию. | yii\db\Transaction |
| canGetProperty() | Возвращает значение, указывающее, может ли свойство быть прочитано. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, может ли свойство быть установлено. | yii\base\Object |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| commit() | Завершает транзакцию. | yii\db\Transaction |
| getIsActive() | Возвращает значение, указывающее, активна ли эта транзакция. | yii\db\Transaction |
| getLevel() | yii\db\Transaction | |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
| rollBack() | Откатывает транзакцию. | yii\db\Transaction |
| setIsolationLevel() | Устанавливает уровень изоляции транзакции для этой транзакции. | yii\db\Transaction |
Константы
| Константа | Значение | Описание | Определено в |
|---|---|---|---|
| READ_COMMITTED | 'READ COMMITTED' | Константа, представляющая уровень изоляции транзакции READ COMMITTED. | yii\db\Transaction |
| READ_UNCOMMITTED | 'READ UNCOMMITTED' | Константа, представляющая уровень изоляции транзакции READ UNCOMMITTED. | yii\db\Transaction |
| REPEATABLE_READ | 'REPEATABLE READ' | Константа, представляющая уровень изоляции транзакции REPEATABLE READ. | yii\db\Transaction |
| SERIALIZABLE | 'SERIALIZABLE' | Константа, представляющая уровень изоляции транзакции SERIALIZABLE. | yii\db\Transaction |
Подробности свойств
$db открытое свойство
Подключение к базе данных, с которым связана эта транзакция.
public yii\db\Connection $db = null
$isActive открытое только для чтения свойство
Активна ли эта транзакция. Только активная транзакция может commit() или rollBack().
public boolean getIsActive ( )
$isolationLevel открытое только для записи свойство
Уровень изоляции транзакции для этой транзакции. Может быть одним из READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ и SERIALIZABLE, а также строкой, содержащей синтаксис, специфичный для СУБД, который используется после SET TRANSACTION ISOLATION LEVEL.
public void setIsolationLevel ( $level )
$level открытое только для чтения свойство
Текущий уровень вложенности транзакции.
public integer getLevel ( )
Подробности методов
begin() public method
Начинает транзакцию.
| public void begin ( $isolationLevel = null ) | ||
|---|---|---|
| $isolationLevel | string|null |
Уровень изоляции для этой транзакции. Может быть одним из значений READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ и SERIALIZABLE, а также строкой, содержащей синтаксис, специфичный для СУБД, используемый после
|
| throws | yii\base\InvalidConfigException |
если $db |
commit() public method
Подтверждает транзакцию.
| public void commit ( ) | ||
|---|---|---|
| throws | yii\db\Exception |
если транзакция не активна |
getIsActive() public method
Возвращает значение, указывающее, активна ли эта транзакция.
| public boolean getIsActive ( ) | ||
|---|---|---|
| return | boolean |
Активна ли эта транзакция. Только активная транзакция может подтвердить() или отменить(). |
getLevel() public method (доступно начиная с версии 2.0.8)
| public integer getLevel ( ) | ||
|---|---|---|
| return | integer |
Текущий уровень вложенности транзакции. |
rollBack() public method
Отменяет транзакцию.
| public void rollBack ( ) | ||
|---|---|---|
| throws | yii\db\Exception |
если транзакция не активна |
setIsolationLevel() public method
Устанавливает уровень изоляции транзакции для данной транзакции.
Этот метод может быть использован для установки уровня изоляции, когда транзакция уже активна. Однако это не поддерживается всеми СУБД, поэтому вы можете указать уровень изоляции непосредственно при вызове begin().
См. также http://en.wikipedia.org/wiki/Isolation_(database_systems)#Isolation_levels.
| public void setIsolationLevel ( $level ) | ||
|---|---|---|
| $level | string |
Уровень изоляции транзакции. Может быть одним из значений READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ и SERIALIZABLE, а также строкой, содержащей синтаксис, специфичный для СУБД, используемый после |
| throws | yii\db\Exception |
если транзакция не активна |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-transaction.html