class Connection extends Component { // 保存当前连接的有效Transaction对象 private $_transaction; // 已经缓存有事务对象,且事务对象有效,则返回该事务对象 // 否则返回null public function getTransaction() { return $this->_transaction && $this->_transaction->getIsActive() ? $this->_transaction : null; } // 看看启用事务时,是如何使用事务对象的 public function beginTransaction($isolationLevel = null) { $this->open(); // 缓存的事务对象有效,则使用缓存中的事务对象 // 否则创建一个新的事务对象 if (($transaction = $this->getTransaction()) === null) { $transaction = $this->_transaction = new Transaction(['db' => $this]); } $transaction->begin($isolationLevel); return $transaction; } }
因此,可以认为整个Yii应用,使用了同一个 Transaction 对象,也就是说, Transaction::_level 在整个应用的生命周期中,是有延续性的。 这是实现事务嵌套的关键和前提。
以上所述是小编给大家介绍的Yii2中事务的使用实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: