国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

正確使用事務(wù)

webman使用數(shù)據(jù)庫事務(wù)與其它框架是一樣的,這里列舉出需要注意的地方

代碼結(jié)構(gòu)

代碼結(jié)構(gòu)和其它框架是一樣的,例如Laravel用法(think-orm類似)

Db::beginTransaction();
try {
    // ..業(yè)務(wù)處理略...

    Db::commit();
} catch (\Throwable $exception) {
    Db::rollBack();
}

這里特別需要注意的是必須使用\Throwable不能使用\Exception,因?yàn)闃I(yè)務(wù)處理過程中可能觸發(fā)Error,它并不屬于Exception

數(shù)據(jù)庫連接

當(dāng)事務(wù)中操作模型時(shí),特別需要注意模型是否設(shè)置了連接。如果模型設(shè)置了連接開啟事務(wù)的時(shí)候要指定連接,否則事務(wù)無效(think-orm類似)。例如

<?php

namespace app\model;
use support\Model;

class User extends Model
{

    // 這里給模型指定了連接
    protected $connection = 'mysql';

    protected $table = 'users';

    protected $primaryKey = 'id';

}

當(dāng)模型指定了連接時(shí),開啟事務(wù)、提交事務(wù)、回滾事務(wù)必須指定連接

Db::connection('mysql')->beginTransaction();
try {
    // 業(yè)務(wù)處理
    $user = new User;
    $user->name = 'webman';
    $user->save();
    Db::connection('mysql')->commit();
} catch (\Throwable $exception) {
    Db::connection('mysql')->rollBack();
}

查找未提交事務(wù)的請求

有時(shí)候業(yè)務(wù)代碼bug導(dǎo)致某個(gè)請求事務(wù)沒有提交,為了快速定位哪個(gè)控制器方法未提交事務(wù),可以安裝webman/log組件,該組件在請求完畢后會自動檢查是否有未提交的事務(wù),并記錄日志,日志關(guān)鍵字為Uncommitted transactions

webman/log安裝方法

composer require webman/log

注意
安裝后需要restart重啟,reload不生效

編輯于2024-03-13 17:42:49 完善本頁 +發(fā)起討論
贊助商