ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP データベース操作クエリ イベント、トランザクション操作、SQL の監視

ThinkPHP データベース操作クエリ イベント、トランザクション操作、SQL の監視

藏色散人
藏色散人転載
2021-02-01 11:01:062835ブラウズ

次のチュートリアル コラムでは、ThinkPHP データベース操作のクエリ イベント、トランザクション操作、および SQL の監視について紹介します。 #クエリ イベント

##クエリ イベント (V5.0.4)

バージョン 5.0.4 以降、次のようなデータベースの CURD 操作イベントのサポートが追加されました。

クエリ イベントサポートされているのは、検索、選択、挿入、更新、削除のメソッドのみです。

#イベントの登録

#次の方法を使用してデータベース クエリ イベントを登録します#

Query::event('after_insert','callback');
Query::event('before_select',function($options,$query){    // 事件处理
    return $result;
});
トランザクション操作

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

トランザクション処理を自動的に制御する## 例外が発生した場合、自動的にロールバックします。

#

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();
}
トランザクション中の注意点操作を行う場合は、データベースの接続が同じであることを確認してください。

SQL を聞く

データベースのデバッグ モードをオンにすると、次のコマンドを実行できます。 SQL 操作を監視するには、次の方法を使用します:

Db::listen(function($sql, $time, $explain){    // 记录SQL
    echo $sql. ' ['.$time.'s]';    // 查看性能分析结果
    dump($explain);
});
デフォルトでは、監視操作が登録されていない場合、これらの SQL 実行はさまざまなログ タイプに従ってログに記録されます。 。

以上がThinkPHP データベース操作クエリ イベント、トランザクション操作、SQL の監視の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。