Ellrion
9/13/2016 - 10:02 AM

Showing all database queries in Laravel 5.2+

Showing all database queries in Laravel 5.2+

<?php

if (! function_exists('dbd')) {
    /**
     * Showing all database queries.
     * Отображение всех запросов в базу.
     *
     * @param null|\Illuminate\Console\Command|\Psr\Log\LoggerInterface $channel
     */
    function dbd($channel = null)
    {
        static $initialized;
        if ($initialized) {
            return;
        }

        app('db')->listen(function ($sql) use ($channel) {
            foreach ($sql->bindings as $i => $binding) {
                $sql->bindings[$i] = is_string($binding) ? "'$binding'" : (string) $binding;
            }

            $query = str_replace(['%', '?'], ['%%', '%s'], $sql->sql);
            $query = vsprintf($query, $sql->bindings);
            if (null === $channel) {
                dump($query);
            } elseif ($channel instanceof \Illuminate\Console\Command) {
                $channel->info($query);
            } elseif ($channel instanceof \Psr\Log\LoggerInterface) {
                $channel->info($query);
            }
        });
        $initialized = true;
    }
}