[Laravel Query Monitor] — Como ver queries executadas pelo Eloquent?
Tags: laravel, eloquent
Published: 2020-05-06 03:45:08

---
title: [Laravel Query Monitor] — Como ver queries executadas pelo Eloquent?
published: true
description: Veja o log das queries executadas pelo Laravel Eloquent ORM. O Laravel Query Monitor ajuda a exibir as consultas SQL realizadas no banco de dados.
tags: laravel, eloquent
---

> [Read in English](https://dev.to/jansenfelipe/laravel-query-monitor-how-to-see-queries-executed-by-eloquent-2h80)

Essa pergunta eu me fiz logo quando estava estudando o Laravel Framework. Na ocasião, estava impressionado com toda a “magia” do Eloquent.

```php
    <?php

    $users = User::where('name', "Jansen Felipe")->get();
    
    // O código acima executa a seguinte instrução SQL:
    // select * from `users` where name = "Jansen Felipe"
```
> O Eloquent incluído no Laravel fornece uma implementação ActiveRecord bonita e simples para trabalhar com seu banco de dados.
> [*Documentação do Laravel Framework](https://laravel.com/docs/7.x/eloquent)*

Eu sou de total acordo. O Eloquent é uma mão na roda e acelera bastante o desenvolvimento daquele MVP que você tem que publicar sexta-feira rsrs..

Acontece que, no caso de sucesso, é bem possível que seu banco de dados cresça e seu sistema comece a ficar lento. (um “bom” problema né?)

Em todos os casos de lentidão que eu já trabalhei, a maioria estava relacionada a performance no banco de dados. E como ver as queries executadas, uma vez que elas estão encapsuladas no framework? Tem várias formas. Cito alguma delas:

* Uma forma é acessar o servidor MySQL (por exemplo) e executar o comando “show processlist”.

* Outra forma é realizar o debug da aplicação chamando o método “toSql()”

* Outra forma é utilizando o package [https://github.com/supliu/laravel-query-monitor](https://github.com/supliu/laravel-query-monitor)

## Laravel Query Monitor

Esse pacote foi criado como uma ferramenta de suporte ao desenvolvedor. Através do terminal, você executa o comando “*php artisan laravel-query-monitor*” e a partir de então, todas as queries executadas na sua aplicação irá aparecer em tempo real no terminal.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7t99b163xd0vhpzu0xrx.gif)

Para desenvolver o pacote, utilizamos o [React PHP](https://github.com/reactphp/socket) para abrir o serviço de escuta de queries no terminal. O envio das queries é realizado utilizando o método DB::listen conforme especificado na documentação do Laravel [https://laravel.com/docs/7.x/database#listening-for-query-events](https://laravel.com/docs/7.x/database#listening-for-query-events)

Se você quer utilizar o pacote, basta fazer a instalação utilizando o composer:

    $ composer require --dev supliu/laravel-query-monitor

    $ php artisan vendor:publish --
    provider="Supliu\LaravelQueryMonitor\ServiceProvider"

O código do pacote é aberto e publicado sob a licença MIT. Então, fique a vontade para copiar, usar e aprimorar! Segue o link do repositório no GitHub [https://github.com/supliu/laravel-query-monitor](https://github.com/supliu/laravel-query-monitor)

Dúvidas, críticas ou sugestões? Fique a vontade nos comentários!

** Esse artigo foi originalmente publicado em [*https://supliu.com.br/2020/04/29/laravel-query-monitor-como-ver-queries-e-executadas-pelo-eloquent/](https://supliu.com.br/2020/04/29/laravel-query-monitor-como-ver-queries-e-executadas-pelo-eloquent/?preview=true)