ホームページ > バックエンド開発 > PHPチュートリアル > Laravel 5 で DB::getQueryLog() が空の配列を返すのはなぜですか?

Laravel 5 で DB::getQueryLog() が空の配列を返すのはなぜですか?

Linda Hamilton
リリース: 2024-11-13 00:02:01
オリジナル
800 人が閲覧しました

Why is DB::getQueryLog() Returning an Empty Array in Laravel 5?

Laravel 5 でのクエリ実行ログの取得: DB::getQueryLog() の空の配列の解決

実行されたクエリのログを表示しようとしたとき、開発者は DB::getQueryLog() からの空の配列の戻り値に遭遇する可能性があります。これに対処するには、まずクエリ ログを有効にすることが重要です。メモリ使用量を最適化するために、Laravel 5 ではデフォルトで無効になっています。

クエリ ログの有効化

  • 方法 1: すべてのクエリ ログを有効にする接続:
DB::enableQueryLog();
ログイン後にコピー
  • 方法 2: 特定の接続 (例: my_connection) のクエリ ログを有効にする:
DB::connection('my_connection')->enableQueryLog();
ログイン後にコピー

クエリを取得していますログ

有効にすると、次のコマンドを使用してクエリ ログを取得できます。

print_r(DB::getQueryLog());
ログイン後にコピー
  • 複数の DB 接続の場合は、上記の呼び出しで目的の接続を指定します。

ミドルウェアアプローチ

有効にするにはHTTP リクエストのライフサイクル中のみのクエリ ロギング:

class LogQueryMiddleware
{
    public function handle($request, Closure $next)
    {
        DB::enableQueryLog();
        $response = $next($request);
        dd(DB::getQueryLog()); // Log queries here
        return $response;
    }
}

// Add the middleware to the app
app()->middleware([LogQueryMiddleware::class]);
ログイン後にコピー

アーティザン コマンド ロギング

ミドルウェア チェーンが実行されないアーティザン コマンドの場合:

// In bootstrap/app.php
app()->events->listen('artisan.start', function() {
    DB::enableQueryLog();
});
ログイン後にコピー

メモリ管理

過剰なクエリはメモリの問題を引き起こす可能性があります。デバッグ目的でのみクエリ ログを有効にすることをお勧めします。

if (app()->environment('local')) {
    DB::enableQueryLog();
}
ログイン後にコピー

これらの手順に従うことで、開発者はクエリ ログを効果的に表示し、アプリケーションのデータベース インタラクションに関する貴重な洞察を得ることができます。

以上がLaravel 5 で DB::getQueryLog() が空の配列を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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