ThinkPHP5 でのトランザクション操作

silencement
リリース: 2020-01-30 22:49:41
転載
4824 人が閲覧しました

ThinkPHP5 でのトランザクション操作

トランザクション処理を使用する場合、データベース エンジンはトランザクション処理をサポートする必要があります。たとえば、MySQL の MyISAM はトランザクション処理をサポートしていないため、InnoDB エンジンを使用する必要があります。

ThinkPHP5.0

トランザクション メソッドを使用してデータベース トランザクションを操作します。例外が発生すると、自動的にロールバックされます。例:

トランザクションを自動的に制御する処理

Db::transaction(function(){
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});
ログイン後にコピー

たとえば、トランザクションを手動で制御することもできます。

// 启动事务Db::startTrans();try{
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();    } catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}
ログイン後にコピー

ThinkPHP5.1

最も簡単な方法は、トランザクション メソッドを使用してデータベース トランザクションを操作します。クロージャ内のコードが実行されると、例外が自動的にロールバックされます。例:

Db::transaction(function () {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});
ログイン後にコピー

トランザクションを手動で制御することもできます。例:

// 启动事务Db::startTrans();try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}
ログイン後にコピー

トランザクション中は次の点に注意してください。操作を行う場合は、データベース接続が同じ接続を使用していることを確認してください。

V5.1.13 以降、MySQL の XA トランザクションをサポートしてグローバル (分散) トランザクションを実装できるようになりました。使用できるのは:

Db::transactionXa(function () {
    Db::connect('db1')->table('think_user')->delete(1);
    Db::connect('db2')->table('think_user')->delete(1);}, [Db::connect('db1'),Db::connect('db2')]);
ログイン後にコピー

データ テーブル エンジンが InnoDB であることを確認し、XA トランザクションを有効にするサポート。

以上がThinkPHP5 でのトランザクション操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:www.liqingbo.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート