在 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
本帖由系统于 1年前 自动加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 24

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

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

Clockwork

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

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

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

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

你这个还要安装这个包,可 以看看大佬的顶级用法

file www.bilibili.com/video/BV1864y1Y7X...

1年前 评论
guanguans (楼主) 1年前
美国总统 (作者) 1年前

Mark

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

我用 composer require eleven26/listen-sql

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

感觉是不错啊

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

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

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

file 不香吗

1年前 评论

不错,试一下 :+1:

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

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