LaravelでN+1問題に対処する

2022年5月8日日曜日

laravel laravel8

t f B! P L
今までN+1問題を検知するためにライブラリを導入したり、ログを出力したりしていたがLaravel8系からは必要がなさそう。
ここに記載されているとおり設定をすればN+1が発生したときにExceptionを発生させてくれる。
Laravel 8.x Eloquent:リレーション 遅延ロードの防止
具体的には AppServiceProvider クラスの boot メソッドで以下のようにする。

use Illuminate\Database\Eloquent\Model;

/**
 * アプリケーションの全サービスの初期起動処理
 *
 * @return void
 */
public function boot()
{
    Model::preventLazyLoading(! $this->app->isProduction());
}

このようにすれば、本番環境以外でN+1が発生した場合にExceptionが発生する。
かなりよさげ

このブログを検索

QooQ