Transaction bir veya daha fazla SQL ifadesini bir bütün olarak düşünen ve başarılı olması halinde SQL ifadelerini kalıcı olarak istenilen değişikliği uygulayan veya hata olması halinde değişiklik yapmadan verileri aynı şekilde korunmasını sağlayan işlemdir.
Örneğin bir öğrenci ev sahibinin hesabına 700 TL kira ödeyecektir. Öğrenci para yatırma işlemini onayladığında önce 700 TL bakiyesinden düşürülür daha sonra ev sahibinin hesabına yatırılır. Eğer bu işlemler gerçekleşirken herhangi bir nedenden dolayı kira yatırılmasaydı ev sahibinin hesabına para yatmaz ve öğrencinin hesabından bakiye düşmez. İşte bu gibi kritik işlemlerde yani bir bütünlük olması gereken işlemlerde Transaction kullanılır.
<php
use yii\db\Query;
$connection = \Yii::$app->db;
$transaction = $connection->beginTransaction();
try {
$user_model=$connection->createCommand()
->insert('tbl_user', [
'name' => 'yii',
'status' => 1,
])->execute();
$connection->createCommand()
->insert('tbl_user_roles', [
'role' => "admin",
'user_id'=> $user_model->id
])->execute();
//.....
$transaction->commit();
} catch(Exception $e) {
$transaction->rollback();
}
?>