在 laravel 中轻松容易的输出完整的 sql 语句

guanguans/laravel-dump-sql - 在 laravel 中轻松容易的输出完整的 sql 语句。

laravel 中查询构造方法得到的 sql 语句没有绑定条件参数,类似于select * from users where id= ?。这个扩展包可辅助你获取完整的 sql 语句。

功能

  • 添加获取 sql 语句的查询构建便捷方法toRawSqldumpSqlddSqllogListenedSqldumpListenedSqlddListenedSql
  • 添加监控 sql 语句的服务命令

环境要求

  • laravel || lumen >= 5.5

安装

$ composer require guanguans/laravel-dump-sql -v

lumen 中配置(laravel 中请忽略)

将下面代码添加到 bootstrap/app.php 文件中的 Register Service Providers 部分

$app->register(\Guanguans\LaravelDumpSql\ServiceProvider::class);

使用

监控 sql 语句的服务的使用

$ php artisan server:dump-sql

获取 sql 语句的查询构建便捷方法的使用

安装配置完毕后数据库查询构造方法会新增以下几个方法:

  • toRawSql() - 获取完整的 sql
  • dumpSql() - 打印完整的 sql
  • ddSql() - 打印完整的 sql 并且退出
  • logListenedSql() - 记录被监听到的 sql
  • dumpListenedSql() - 打印被监听到的 sql
  • ddListenedSql() - 打印被监听到的 sql 并且退出

toRawSql() - 获取完整的 sql

$sql = User::query()->where('id', 1)->toRawSql();
dd($sql);
"select * from `xb_users` where `id` = 1"

dumpSql() - 打印完整的 sql

User::query()->where('id', 1)->dumpSql();
User::query()->where('id', 2)->dumpSql();
"select * from `xb_users` where `id` = 1"
"select * from `xb_users` where `id` = 2"

ddSql() - 打印完整的 sql 并且退出

User::query()->where('id', 1)->ddSql();
User::query()->where('id', 2)->ddSql();
"select * from `xb_users` where `id` = 1"

logListenedSql() - 记录被监听到的 sql

User::query()->where('id', 1)->logListenedSql()->first();
User::query()->where('id', 2)->first();
# 日志中
[Laravel] [39.97ms] select * from `xb_users` where `id` = '1' limit 1 | GET: /
[Laravel] [39.93ms] select * from `xb_users` where `id` = '2' limit 1 | GET: /

dumpListenedSql() - 打印被监听到的 sql

User::query()->where('id', 1)->dumpListenedSql()->first();
User::query()->where('id', 2)->first();
[Laravel] [39.97ms] select * from `xb_users` where `id` = '1' limit 1 | GET: /
[Laravel] [39.93ms] select * from `xb_users` where `id` = '2' limit 1 | GET: /

ddListenedSql() - 打印被监听到的 sql 并且退出

User::query()->where('id', 1)->ddListenedSql()->first();
User::query()->where('id', 2)->first();
[Laravel] [39.97ms] select * from `xb_users` where `id` = '1' limit 1 | GET: /

参考项目

本作品采用《CC 协议》,转载必须注明作者和本文链接
No practice, no gain in one's wit. 我的 Gitub
本帖由系统于 2年前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 23

直接改一个不存在的 cloumn 查看报错信息即可 :joy:

2年前 评论
guanguans (楼主) 2年前
小李世界 2年前
命中水 2年前
aab 2年前
Alcohol 1年前

直接改一个不存在的 cloumn 查看报错信息即可 :joy:

2年前 评论
guanguans (楼主) 2年前
小李世界 2年前
命中水 2年前
aab 2年前
Alcohol 1年前
playmaker

Clockwork

2年前 评论
guanguans (楼主) 2年前
    监听事件 :+1:
    我也想到一个,这样玩,会卡死

    $this->app['events']->listen(MessageLogged::class,function(){
         Log::info('记录日志!');
    });
    这是个死循环啊
2年前 评论
guanguans (楼主) 2年前

Mark

2年前 评论
guanguans (楼主) 2年前

我用 composer require eleven26/listen-sql

2年前 评论
guanguans (楼主) 2年前

感觉是不错啊

2年前 评论
guanguans (楼主) 2年前
chowjiawei

好麻烦啊 直接telescope 不香吗,连时间都有

2年前 评论
guanguans (楼主) 2年前
chowjiawei

file 不香吗

2年前 评论

不错,试一下 :+1:

2年前 评论
guanguans (楼主) 2年前

还不错

1年前 评论
guanguans (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
56
粉丝
126
喜欢
971
收藏
1333
排名:46
访问:15.3 万
私信
所有博文
社区赞助商