Laravel 多次调用 DB::beginTransaction() 会不会触发事务嵌套或者事务提交? 答案是不会。

yufei       3 周, 2 天 前       63

Laravel 多次调用 DB::beginTransaction() 会不会触发事务嵌套或者事务提交?

答案是不会。

不管你用多少次 DB::beginTransaction() 或者多少次 DB::transaction(),Laravel 一次只会存在一个事务。

Laravel 拦截多次事务的代码如下

public function beginTransaction()
{
    $this->createTransaction();
    $this->transactions++;
    $this->fireConnectionEvent('beganTransaction');
}
/**
 * Create a transaction within the database.
 *
 * @return void
 */
protected function createTransaction()
{
    if ($this->transactions == 0) {
        try {
            $this->getPdo()->beginTransaction();
        } catch (Exception $e) {
            $this->handleBeginTransactionException($e);
        }
    } elseif ($this->transactions >= 1 && $this->queryGrammar->supportsSavepoints()) {
        $this->createSavepoint();
    }
}

也就是说只有第一次调用 beginTransaction() 方法才会开启事务。

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2018 简单教程 twle.cn All Rights Reserved.