我需要在已启动的事务之外运行查询:
$transaction = \Yii::$app->db->beginTransaction();
try {
//... other database queries within the transaction ...
//Query I want to be inserted regardless:
\Yii::$app->db->createCommand("INSERT INTO...")->execute();
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
}
有没有一个聪明的方法可以做到这一点,或者我需要克隆/创建一个新的数据库连接-如果是这样的话,在不必再次指定数据库参数并只使用相同的配置的情况下,最好的方法是什么?
1条答案
按热度按时间hgc7kmma1#
您需要使用单独的连接或在事务之后/之前移动此查询。
对于复制db组件,您可以简单地使用
clone
-新示例应在第一次查询时打开新连接:它是这样用的
yii\log\DbTarget
.但是您可以考虑为此任务声明单独的db组件(
Yii::$app->db2
)-然后您将能够重用此附加连接。