DEV Community

Jansen Felipe
Jansen Felipe

Posted on

[Laravel Query Monitor] — Como ver queries executadas pelo Eloquent?

Read in English

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

    <?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*

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

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

Para desenvolver o pacote, utilizamos o React PHP 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

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

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/

Top comments (0)