Skip to content

Laravel package to dump SQL queries, related EXPLAIN and location in code in different formats.

License

Notifications You must be signed in to change notification settings

cerbero90/sql-dumper

Repository files navigation

SQL Dumper

Author PHP Version Laravel Version Build Status Coverage Status Quality Score Latest Version Software License PSR-12 Total Downloads

Laravel package to dump SQL queries, related EXPLAIN and location in code in different formats:

  • HTML
  • markdown
  • email
  • console
  • log

Install

Via Composer

composer require --dev cerbero/sql-dumper

To customize some aspects of this package, the config/sql_dumper.php file can optionally be generated via:

php artisan vendor:publish --tag=sql-dumper

Usage

The easiest way to dump a SQL query is calling the helper functions. There is a helper for each dumper:

  • ds() dump SQL queries with the dumper specified in config/sql_dumper.php as default dumper
  • dsConsole() dump SQL queries with the console dumper
  • dsEmail() dump SQL queries with the email dumper
  • dsHtml() dump SQL queries with the html dumper
  • dsLog() dump SQL queries with the log dumper
  • dsMarkdown() dump SQL queries with the markdown dumper

All SQL queries executed within the helper's closure are dumped:

$user = ds(function () {
    return User::with('posts')->find(1);
});

Depending on dumper and database driver, SQL queries dumps will look like:

console dump
email or HTML file or markdown file dump
log file dump

Along with the default dumper, in config/sql_dumper.php we may customize the SQL dumpers default behavior. For example, the HTML dump default path is /storage/sql_dump_TIMESTAMP.html but we can set a different one:

return [
    HtmlDumper::class => [
        'path' => storage_path('foo.html'),
    ],
];

Also templates and email recipient are customizable, please refer to the [configuration][link-config] for further details.


This package includes a middleware to easily dump SQL queries in routes or group of routes. The middleware can be registered in app/Http/Kernel.php:

protected $routeMiddleware = [
    'sql.dump' => \Cerbero\SqlDumper\Http\Middleware\SqlDump::class,
];

Then we can add it to routes to run the default dumper:

Route::middleware('sql.dump')->get('users', function () {
    return User::all();
});

If we want to use a different dumper, we can pass it to the middleware as a parameter:

Route::middleware('sql.dump:log')->get('users', function () {
    return User::all();
});

The valid parameters are:

  • console
  • email
  • html
  • log
  • markdown

Change log

Please see CHANGELOG for more information on what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Laravel package to dump SQL queries, related EXPLAIN and location in code in different formats.

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages