Back-End

22 mar, 2017

Registrando todas as consultas em uma linha de comando Laravel

Publicidade

Para a maioria dos projetos web em Laravel, vocês podem utilizar o excelente pacote laravel debugbar para ter uma visão geral no navegador de todas as consultas sendo executadas por página. Para comandos executados via Artisan na linha de comando, você precisa de uma alternativa.

Este é um método que eu utilizei com frequência enquanto trabalhava no DNS Spy, já que a maioria da lógica da aplicação está dentro dos workers jobs, executados somente via CLI.

Então, aqui está um método rápido para registrar todas suas consultas SQL na saída do console.

<php

use Illuminate\Support\Facades\DB;

public function handle()
{
      \DB::listen(function($sql) {
          var_dump($sql->sql);
      });
}
?>

Primeiro, importe o DB Facade.

Então, adicione um listener para todas as consultas sendo executadas, e deixe a consulta em var_dump(). Como alternativa, você pode utilizar dump() ou dd() também.

O resultado:

$ php artisan queue:work
...
string(170) "select * from `xxx` where `xxx`.`record_id` = ? and `xxx`.`record_id` is not null ..."
string(146) "insert into `xxx` (`value`, `nameserver_id`, `ttl`, ... ) values (?, ?, ?, ...)"

Adicionar um DB listener é uma maneira conveniente de visualizar todas suas pesquisas direto no console, para os momentos que o debugbar não puder ser utilizado.

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/log-queries-laravel-cli-command/.