概要
Laravel5.7で、DBファザードのbeginTransaction
メソッド、commit
メソッドの実行ログを出力する方法。
DB::getQueryLog()
を実行することで、QueryBuilderが生成したSQLを出力を取得することができますが、beginTransaction
、commit
メソッドの実行ログは出力されません。transactionの流れを確認をしたいことがあったので、下記の方法で確認しました。
詳細な説明は省いていますが、ご参考になれば幸いです。
方法
app/Providers/EventServiceProvider.php
のboot()
に下記処理を追加する。
app/Providers/EventServiceProvider.php
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
Event::listen('Illuminate\Database\Events\TransactionBeginning', function () {
\Log::debug('beginTransaction');
});
\DB::listen(function ($query) {
\Log::debug($query->sql);
});
Event::listen('Illuminate\Database\Events\TransactionCommitted', function () {
\Log::debug('commit');
});
Event::listen('Illuminate\Database\Events\TransactionRolledBack', function () {
\Log::debug('rollBack');
});
}