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

藏色散人
リリース: 2021-02-03 18:49:06
転載
2811 人が閲覧しました

次のチュートリアル コラムでは、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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!