ホームページ > 記事 > PHPフレームワーク > ThinkPHP データベース操作クエリ イベント、トランザクション操作、SQL の監視
次のチュートリアル コラムでは、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 サイトの他の関連記事を参照してください。