laravel查看sql语句

2023-11-06

方法一:

我们有时候想测试一段代码生产的 SQL 语句,比如: 我们想看 App\User::all(); 产生的 SQL 语句,我们简单在 routes.php 做个实验即可:

//app/Http/routes.php

Route::get(‘/test-sql’, function() {

DB::enableQueryLog();

$user = App\User::all();

return response()->json(DB::getQueryLog());

});
然后我们在浏览器打开 http://www.yousite.com/test-sql 即可看到 $user = User::all(); 所产生的 SQL 了。

[
{
query: “select * from users where users.deleted_at is null”,
bindings: [ ],
time: 1.37
}
]

方法二:

在routes.php添加如下代码

Event::listen(‘illuminate.query’, function( sql, param) {
file_put_contents(public_path().’/sql.log’, sql.[.printr( param, 1).’]’.”\r\n”,8);
//echo sql.",with[".join(,, param) .”]“;
});

方法三:
调用vendor\laravel\framework\src\Illuminate\Database\Query的toSql方法:
$query->toSql();
方法四:
使用监听器

第一步:创建监听器

php artisan make:listener QueryListener –event=illuminate.query
生成文件于 app/Listeners/QueryListener.php

然后删除 app/Listeners/QueryListener.php 顶部的 use App\Events\illuminate.query;, 这是自动生成的。

第二步:注册事件

打开 app/Providers/EventServiceProvider.php,在 $listen 中添加 illuminate.query 事件的监听器为 QueryListener:

protected $listen = [
‘illuminate.query’ => [
QueryListener::class,
],
];
当然在类前面你需要 use App\Listeners\QueryListener; 不然就报类不存在了。

第三步:添加逻辑

修改上面生成的文件,我们把 SQL 查询记录到日志里,所以编辑 handle 方法为:

/**
 * Handle the event.
 *
 * @param  Events  $event
 * @return void
 */
public function handle($sql, $params)
{
    if (env('APP_ENV', 'production') == 'local') {
        foreach ($params as $index => $param) {
            if ($param instanceof DateTime) {
                $params[$index] = $param->format('Y-m-d H:i:s');
            }
        }
        $sql = str_replace("?", "'%s'", $sql);
        array_unshift($params, $sql);
        Log::info(call_user_func_array('sprintf', $params));
    }
}

上面我们用到了两个类:Log 与 DateTime, 别忘记引入它们。

解释一下上面的代码:

illuminate.query 事件触发时的参数为两个:handle( sql, params), SQL 预处理语句与查询参数值;
我们只在开发环境记录 SQL:env(‘APP_ENV’, ‘production’) == ‘local’;
我们的参数里可能存在日期类型,所以直接记日志会报错,所以处理一下:$param instanceof DateTime;
然后跑一下试试吧,应该在日志里就能看到:

[2015-07-10 02:45:39] local.INFO: update tricks set view_cache = “10”, updated_at = “2015-07-10 02:45:39” where id = “2”

原文地址:https://my.oschina.net/melonol/blog/126694

Author:leedaning
本文地址:http://blog.csdn.net/leedaning/article/details/53792727

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

laravel查看sql语句 的相关文章

  • 如何在 Laravel 5.4 中使用 bootstrap 4?

    我在我的 laravel 应用程序上使用 npm 安装了 bootstrap 4 但我认为 bootstrap 3 的工作落后于 bootstrap 4 使用命令 npm install npm install email protecte
  • 使用composer create-project安装特定的laravel 5版本

    今天我尝试安装特定的 laravel 版本composer create project laravel laravel 5 1 8 your project name prefer dist 因为有些插件在5 1 9及以上版本有问题 但是
  • Laravel 5.4 密码重置

    我有一个 Laravel 5 4 应用程序 我的管理区域中有一个视图 允许我查看所有用户 我想创建一个功能 允许我单击后端的按钮 自动发送默认 Laravel 密码重置功能的过程 在我看来 我有以下几点 table class table
  • 附加之前检查数据库中是否存在 ID

    我通过选择一个带有类别的数组json decode并将它们附加到文章中 public static function setArticleCategory Request request article Article where id r
  • Laravel:运行队列:在 Windows Azure Web App 上连续监听

    我觉得问这个问题有点傻 但我似乎无法在互联网上找到这个问题的答案 经过几个小时的搜索后 我发现在 Linux 服务器上 您使用 Supervisor 在您的网站上连续运行 php artisanqueue listen 无论有或没有守护进程
  • Laravel 6:尚未设置外观根

    经过一段时间的努力 我已将我的网站从 Laravel 5 8 迁移到 Laravel 6作曲家更新我在网站上遇到此错误 并且仅使用命令PHP工匠 PHP Fatal error Uncaught RuntimeException A fac
  • Laravel 中的支付网关回调时会话会自动销毁

    我正在尝试将 CCavenue com 支付网关集成到我的 Laravel 7 项目中 我面临的唯一问题是在回调 url 中 从支付网关获取发布数据后 活动会话会自动销毁 我还向中间件添加了 CSRF 例外 PayController 生成
  • Laravel:如何设置多对多关系的连接?

    我有模型 class User extends Model protected connection mysql public function areas return this gt belongsToMany Area class u
  • Laravel MySQL 按计数排序

    我正在使用 Laravel 和 MySQL 并且我有一个表post代表用户可以评论的帖子 现在我想按照每个帖子的评论数量按升序 降序对帖子进行排序 我该如何在 Laravel 中执行此操作 我不想添加字段post表来跟踪每个帖子的评论数量
  • Laravel 转义 Blade 模板中的所有 HTML

    我正在 Laravel 中构建一个小型 CMS 并尝试显示内容 存储在数据库中 它显示 HTML 标签而不是执行它们 就像所有打印数据都有一个自动 html entity decode 一样
  • 如何在 vue.js 中创建用于创建和编辑功能的简单模式?

    我正在尝试创建一个模型以便能够编辑现有数据 我该怎么做呢 我正在使用一个
  • 如何在 Laravel 中 session_write_close() ?

    Running session write close before sleep 在 Laravel 中似乎不起作用 因为会话仍然被其他请求阻止 直到当前连接完成 我试图sleep 在 Laravel 中 不会阻止其他请求 发现 sessi
  • 在 Laravel 中按数据透视表 create_at 排序

    在我的数据库中 我有以下表格 courses id 名称 创建时间 更新时间 students id 名称 创建时间 更新时间 课程 学生 id course id student id created at updated at 我正在尝
  • Laravel Vue js spa 应用程序

    1 我想知道为什么人们使用两台服务器用 laravel 制作 vuejs SPA 我想我们可以用另一种方式 制定这样的路线 Route get any function return view index gt where any 并让 v
  • cURL 错误 77:设置证书验证位置时出错:CAfile

    我正在使用 Firebase php SDKlink https firebase php readthedocs io en latest index html并在 Windows 10 上的 XAMPP 服务器上使用 laravel 最
  • laravel 中哪里可以设置标题

    我想将标题设置为array Cache Control gt no cache no store max age 0 must revalidate Pragma gt no cache Expires gt Fri 01 Jan 1990
  • PHPUnit\Framework\TestCase 和 Tests\TestCase 有什么区别?

    我注意到在示例测试中 这两个类是内置的 功能测试 gt use Tests TestCase 单元测试 gt PHPUnit Framework TestCase 两者有什么区别 在什么情况下您会使用其中一种 PHPUnit Framewo
  • 在 null laravel 上调用成员函数 save()

    大家好 我正在使用 laravel 5 多态关系将数据保存在数据库中 但我遇到了一些问题 当我尝试将数据保存在数据库中时 它会抛出此错误 对 null 调用成员函数 save 我不知道为什么我会遇到这个错误 我正在关注多态关系的本教程在 L
  • 如何解决 Laravel 8 UI 分页问题?

    我在尝试最近发布的 laravel 8 时遇到了问题 我试图找出变化是什么以及它是如何工作的 当我这样做时 我遇到了分页 laravel 8 UI 变得混乱的问题 不知何故它发生了 有人可以帮助我吗 或者经历过同样的事情 像这样我在 lar
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a

随机推荐

  • 【图像检测】基于DeepPupil Net 实现眼中心定位附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • IEC104协议的参数设置

    本文主要是IEC104协议的参数的定义及个人的理解 如有错误请指正 重要参数 104规约规定了两个参数K和W 其取值为1到32767 其中K表示发送方在有K个I格式报文未得到对方的确认时 将停止数据发送 W表示接收方最迟在接收W个I格式报文
  • 数据库复习基本概念——关系、元组、属性、码、域、分量、形式化定义

    1 关系 Relation 一个关系对应通常说的一张表 2 元组 Tuple 表中的一行即为一个元组 3 属性 Attribute 表中的一列即为一个属性 给每一个属性起一个名称 即属性名 4 码 键 码是数据系统中的基本概念 所谓码就是能
  • CTFweb篇——签到题

    0x00 前言 一个简单的CTF签到题 0x01 打开靶场 0x02 打开靶场地址发现信息 通过题目提示信息使用burpsuit抓包 Send to Repeater 然后查看 Repeater 点击GO 在Response中 Header
  • Git使用常见问题解决方法汇总

    1 在Ubuntu下使用 git clone时出现server certificate verification failed CAfile etc ssl certs ca certificates crt CRLfile none 解决
  • Java Web-servlet技术-重定向与转发

    1 创建Verify java的servlet文件 重写doGet 方法 package myservlet import java io IOException import java io PrintWriter import java
  • JMeter-Eclipse添加自定义函数 MD5加密 32位和16位

    最近公司的接口都是MD5 16位加密 所以要使用加密功能 之前也做过加密 因为用的比较少 所以是写了一个加密方法 导出JAR包 调用的 用起来需要很多设置 并且换算效率也不高 听前同事说 jmeter可以自己写函数 放在函数管理里面 今天自
  • Fabric2.0.0环境搭建及链码操作详解

    安装软件 更新源 sudo apt get update 安装Go cd usr local 上传go的压缩包 sudo rz 解压压缩包 sudo tar zxf go1 14 4 linux amd64 tar gz 配置环境 vim
  • 使用9p virtFS在宿主机和vm之间共享多个文件 sharing multiple host files with guest using 9p virtFS

    目录 前置条件 准备共享目录 编辑qemu conf 前置条件 根据qemu官方文档 首先准备前置条件 测试条件为pve 7 1 10 omv 5 6 26 1 omv 6 0 19 debian 11 首先确保guest的kernel中的
  • C语言函数大全-- z 开头的函数

    z 开头的函数 1 zalloc 1 1 函数说明 1 2 演示示例 2 zcalloc 2 1 函数说明 2 2 演示示例 3 zcfree 3 1 函数说明 3 2 演示示例 4 zclearerr 4 1 函数说明 4 2 演示示例
  • Vbox 上网与共享网络配置

    Vbox 上网与共享网络配置 我们在使用VBOX 安装Ubuntu虚拟机的时候 经常容易碰到一个现象 当我们将网卡设置成 网络地址转换 NAT 的时候 能上网 但是IP与主机的不在一个网段 能上网 却不能使用SAMBA共享 将网络设置成 桥
  • mysql解析二进制日志_MySQL二进制日志详解及Mysql备份和恢复

    二进制日志 修改 也叫复制日志 position 位置 time 时间 滚动 1 大小 2 时间 二进制日志的功用 即时点恢复 复制 mysql gt SHOW MASTER STAUS mysql gt FLUSH LOGS mysql
  • Windows/MacOS 上 VSCode 配置 C++:LLVM(Clang + Clangd + LLDB)

    CSDN 版本已不再更新 请查看 文档 CSDN 版本已不再更新 请查看 文档 CSDN 版本已不再更新 请查看 文档 CSDN 版本已不再更新 请查看 文档 CSDN 版本已不再更新 请查看 文档 CSDN 版本已不再更新 请查看 文档
  • [OCR]基于垂直投影的单行文字图像_字分割

    背景 面临一个银行票据识别任务 目标是 将一行金额或日期描述文本作OCR识别 由于数据包含手写体和多版本多字体机打文字 采用单文字拼接方式做数据增强 数据增强思路 1 将单行文字图像切成单字分别存储 得到某个字的多个表达形式集合 2 对于每
  • java将字符串生成二维码并上传到七牛云

    之前碰到一个需求是将一个url链接生成二维码 并且能够让用户通过二维码扫码打开这个链接 在此记录一下 云存储用的是七牛云OSS 所以首先需要引用七牛云的maven架包
  • 2023全网最全requests库和requests模块使用详解(建议收藏)

    一 requests简介 简介 使用requests可以模拟浏览器的请求 比起之前用的urllib requests模块的api更加便捷 本质就是封装了urllib3 注意 requests库发送请求将网页内容下载下来以后 并不会执行js代
  • C++ 简单乘积

    C 语法基础题目第2题 简单乘积 题目 简单乘积 题目来源 acwing 605题 读取两个整数值 在此之后 计算它们的乘积并将结果存储在名为PROD的变量中 输出结果如下例所示 输入格式 共两行 每行包含一个整数 输出格式 输出格式为 P
  • 11-3 读写一个字符

    1 读一个字符 读一个字符的函数有三种 分别为 getchar getc 以及 fgetc 其中 getc 和 fgetc 实现方式不一样 但功能相同 getc 利用宏实现 fgetc 利用函数实现 此外 注意上述函数返回值均为整数 且 s
  • 深度学习--TensorFlow(5)BP神经网络(混淆矩阵、准确率、精确率、召回率、F值)

    目录 一 混淆矩阵 二 准确率 三 召回率 四 精确率 五 综合评估指标 F值 一 混淆矩阵 也程 误差矩阵 是表示 精度评价的一种标准格式 用n行n列的矩阵形式来表示 在机器学习领域 混淆矩阵又称为可能性表格或者是错误矩阵 它是一种特定的
  • laravel查看sql语句

    方法一 我们有时候想测试一段代码生产的 SQL 语句 比如 我们想看 App User all 产生的 SQL 语句 我们简单在 routes php 做个实验即可 app Http routes php Route get test sq