当前位置:网站首页>打印sql各种方法汇总
打印sql各种方法汇总
2022-08-07 05:12:00 【捣蛋鬼大师】
各种打印sql方法
1. getQueryLog(获取的是最近的sql即开启enableQueryLog时刻算起)
DB::connection()->enableQueryLog();
//要执行的查询语句
dump(DB::getQueryLog());
2. 封装方法(新建一个helper.php文件,利用composer自动加载)
if(! function_exists('query_log')){
function query_log($callback)
{
/** * Print the current sql and Output * * @param Closure $callback * @return array */
DB::connection()->enableQueryLog();
if( $callback instanceof \Closure){
$callback();
}
dump(DB::getQueryLog());
}
}
3. 接收应用程序执行的每个 SQL 查询,可以使用 listen 方法。 此方法对于记录查询或调试很有用,服务提供者中注册你的查询侦听器:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/** * 引导应用程序服务 * * @return void */
public function boot()
{
DB::listen(function ($query) {
// $query->sql
// $query->bindings
// $query->time
});
}
/** * 注册服务提供者 * * @return void */
public function register()
{
//
}
}
4. toSql方法
$query = \DB::table('users')->where('name', 'myname');
echo $query->toSql();
想要绑定数据?使用以下方法:
$query = \DB::table('users')->where('name', 'myname');
$sql = str_replace_array('?', $query->getBindings(), $query->toSql());
echo $sql;
5. 自定义一个 macroable'带有获取绑定数据的 SQL 查询替换 toSql
宏定义是为类动态的增加方法
添加以下宏方法到 AppServiceProviderboot()方法下
\Illuminate\Database\Query\Builder::macro('toRawSql', function(){
return array_reduce($this->getBindings(), function($sql, $binding){
return preg_replace('/\?/', is_numeric($binding) ? $binding : "'".$binding."'" , $sql, 1);
}, $this->toSql());
});
\Illuminate\Database\Eloquent\Builder::macro('toRawSql', function(){
return ($this->getQuery()->toRawSql());
});
调试
echo \DB::table('users')->where('name', 'myname')->toRawSql();
echo User::where('name', 'myname')->toRawSql();
边栏推荐
- MySQL advanced 1 - underlying data structure B+ tree
- ansible——playbook剧本的讲解与应用
- 远程连接 redis 时,报错 (error) DENIED Redis is running in protected mode because protected mode is enabled
- 线性代数学习笔记5-2:(正交的)投影、投影矩阵、A^T A、最小二乘法LS
- Mysql查询数据库有多少张表
- 线性代数学习笔记4-1:线性方程组的数学和几何意义、零空间/解空间/核
- C51 基本函数、中断函数和库函数的详解
- 线性代数学习笔记6-3:行列式的计算、代数余子式
- 线性代数学习笔记3-5:关于秩的小结、秩1矩阵、矩阵相加的秩(矩阵作为向量构成的空间)
- Redis 发布订阅操作
猜你喜欢

谭浩强第五版第三章课后习题

循环栅栏 CycleBarrier 理解到深入

自动化运维工具——ansible概述和部署

聊聊Redis内存优化的7个神技

一周活动速递|深入浅出第8期;Meetup成都站报名进行中

【Yu Niangniang】1373. Maximum key value and DFS of binary search subtree

Linear Algebra Study Notes 4-6: Null Space, Column Space, Row Space, Left Null Space, Elementary Row Transformation, Test Questions of Matrix

Mysql查询数据库有多少张表

详解孙宇晨“星辰大海”背后的一盘大棋,太空旅行需要更多人参与

线性代数学习笔记5-2:(正交的)投影、投影矩阵、A^T A、最小二乘法LS
随机推荐
乘势而上,OceanBase推动数字支付精益增长
[Graduation Project] Automatic gas station refueling system based on STM32 - Internet of Things, microcontroller, embedded
MySQL
pymysql格式化输入的一些问题
万物并作,吾以观复|OceanBase 政企行业实践
LeetCode 二叉树的遍历
OK-MY TODO LIST
c语言:通讯录
Empty suite
Excel合并单元格测试代码
SSM的简单整合
Network cable
洛谷P2456 二进制方程
File类学习笔记
[TypeScript Notes] 03 - TS Type Declaration File
多个Excel打包成zip导出
2021-01-18
《国际学术论文写作与发表》参考答案
【着色器实现Distortion整体扭曲效果_Shader效果第十七篇】
Backtracking and its Simple Question Example