首頁 > 後端開發 > php教程 > Yii2 框架自带的ActiveRecord 事务嵌套分析

Yii2 框架自带的ActiveRecord 事务嵌套分析

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-06 20:25:00
原創
2447 人瀏覽過

ActiveRecord 这个class文件update方法里面如何下:

public function update($runValidation = true, $attributeNames = null)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code>{

    if ($runValidation && !$this->validate($attributeNames)) {

        Yii::info('Model not updated due to validation error.', __METHOD__);

        return false;

    }

 

    if (!$this->isTransactional(self::OP_UPDATE)) {

        return $this->updateInternal($attributeNames);

    }

 

    $transaction = static::getDb()->beginTransaction();

    try {

        $result = $this->updateInternal($attributeNames);

        if ($result === false) {

            $transaction->rollBack();

        } else {

            $transaction->commit();

        }

        return $result;

    } catch (\Exception $e) {

        $transaction->rollBack();

        throw $e;

    }

}

 

 

</code>

登入後複製
登入後複製

为什么update底层也用了事务操作,如果在外面也开启事务,事务嵌套,会造成什么影响?

回复内容:

ActiveRecord 这个class文件update方法里面如何下:

public function update($runValidation = true, $attributeNames = null)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code>{

    if ($runValidation && !$this->validate($attributeNames)) {

        Yii::info('Model not updated due to validation error.', __METHOD__);

        return false;

    }

 

    if (!$this->isTransactional(self::OP_UPDATE)) {

        return $this->updateInternal($attributeNames);

    }

 

    $transaction = static::getDb()->beginTransaction();

    try {

        $result = $this->updateInternal($attributeNames);

        if ($result === false) {

            $transaction->rollBack();

        } else {

            $transaction->commit();

        }

        return $result;

    } catch (\Exception $e) {

        $transaction->rollBack();

        throw $e;

    }

}

 

 

</code>

登入後複製
登入後複製

为什么update底层也用了事务操作,如果在外面也开启事务,事务嵌套,会造成什么影响?

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
yii2怎樣用mongodb做rbac
來自於 1970-01-01 08:00:00
0
0
0
yii2 - 如何修改他人在github.com上的原始碼
來自於 1970-01-01 08:00:00
0
0
0
yii2連接mongodb3.2.4出錯
來自於 1970-01-01 08:00:00
0
0
0
php - yii2-ueditor-widget
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板