Проблема N+1 стара как мир. Инструментов много: Debugbar хорош локально, Telescope тяжеловат для продакшена. Мне хотелось решения, которое будет «стучать» в Slack или Telegram именно тогда, когда проблема случилась на проде, и при этом сразу показывать пальцем на виновную строку кода.
Так появился Eloquent Guard
Как это работает под капотом
Основная магия происходит через подписку на события базы данных в Laravel. В сервис-провайдере пакета мы слушаем QueryExecuted:
DB::listen(function (QueryExecuted $query) {
// 1. Проверяем дубликаты (N+1) по хэшу SQL
// 2. Замеряем время выполнения (Slow Query)
// 3. Если порог превышен — запускаем репортеры
});
