编程

Laravel showsql 包, 将 SQL 查询发送到你指定的调试工具

1731 2021-12-12 21:03:24

Laravel showsql 包可以将模型的 SQL 查询语句输出到你钟爱的调试工具或浏览器中

Menu::whereHas('status')
    ->showSql()
    ->get();

当你调用 showSql() 方法时,生成的 SQL 查询语句会被发送到 Laravel Telescope、Laravel Log、Ray、Clockwork、 Laravel Debugbar 或者网页浏览器中。你可以配置让其发送 SQL 查询到多个位置。

这个包非常有用。你可以锁定特定的查询日记而无需梳理该请求下单所有查询语句。

安装

composer require dietercoopman/laravel-showsql --dev

默认配置将输出到 ray、clockwork 和 laravel debugbar。如果你想修改输出位置,将配置文件 publish:

php artisan vendor:publish --tag=showsql-config 

配置项如下:

return [
    'to' => [
        'telescope' => false,
        'ray' => true,
        'clockwork' => true,
        'debugbar' => true,
        'log' => false,
        'browser' => false,
    ]
];

用例

# With the Eloquent Builder

Menu::showSql()->get();

Menu::whereId(1)->showSql()->get();

Menu::whereHas('status')->showSql()->get();

# With the Query Builder

DB::table('menus')->where('id', '=', 10)->showSql()->get();

DB::table('menus')->join('statuses', 'statuses.id', '=', 'menus.status_id')
                 ->showSql()
                 ->get();

# With a callback 

$callback = function(string $sql){
  Log::info($sql);
};

DB::table('products')->where('id', '=', 1)->showSql($callback)->get();