在 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个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 23

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

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

Clockwork

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

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

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

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

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

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

2个月前 评论
guanguans (楼主) 2个月前
美国总统 (作者) 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:

1个月前 评论
guanguans (楼主) 4周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!