👻

【Laravel】開発環境にN+1警察👮を宿らせる 【Laravel N+1 Query Detector】

2022/12/02に公開

概要

N+1を検知してアラートで知らせてくれるライブラリを導入して使ってみます。
実際にプロジェクトにも導入してみました。

インストール

composer require beyondcode/laravel-query-detector --dev
php artisan vendor:publish --provider=BeyondCode\\QueryDetector\\QueryDetectorServiceProvider

configディレクトリに設定ファイルが追加されました。
邪魔になったらコメントアウトで消せます。

config/querydetector.php
'output' => [
    // 画面上でアラートを検知内容を表示
    \BeyondCode\QueryDetector\Outputs\Alert::class,
    // ログファイルに検知内容を表示
    \BeyondCode\QueryDetector\Outputs\Log::class,
]

コンソールにも表示できます

'output' => [
    \BeyondCode\QueryDetector\Outputs\Console::class
]

https://beyondco.de/docs/laravel-query-detector/usage

実際に警察に出てきてもらう🚔

さんぷる
$schedules = Schedule::all();
foreach ($schedules as $schedule) {
    echo $schedule->user->name;
}

👮「
スクリーンショット 2022-11-30 17.35.00.png

はい怒られました。
画面に出てくるのがうざい場合はコンソールだけにしましょう。

プロジェクトに導入してみて

○ 無意識に起こしてしまっていたN+1を知れ、早急に対処に取り掛かれる
× ごちゃごちゃしてるコードだと実際どこのコードなのか分からない

Discussion