Yii2的事务处理方法代码示例
关于使用数据库事务几项功能的改进
首先,你现在可以像下面这样以回调形式的事务工作:
$connection->transaction(function() {
$order = new Order($customer);
$order->save();
$order->addItems($items);
});
这相当于下列冗长的代码:
$transaction = $connection->beginTransaction();
try {
$order = new Order($customer);
$order->save();
$order->addItems($items);
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
}
最后,开始一个新的事务时,您可以设置事务隔离级别(例如READ COMMITTED)。例如,
$transaction = $connection->beginTransaction(Transaction::READ_COMMITTED);
示例代码
//这里开始加一个事务,若有一步没成功,则全部回滚 db_qipa_center 为连接数据库的配置文件
$db = Yii::$app->db_qipa_center->beginTransaction();
try {
//相关业务逻辑
$db->commit();
} catch (Exception $e) {
$db->rollBack();
}