首页 > 数据库 >laravel 监听数据库查询

laravel 监听数据库查询

时间:2024-04-30 10:35:05浏览次数:22  
标签:laravel 数据库 binding 查询 sql query bindings 监听

laravel 监听数据库查询

DB::listen

在Laravel框架中,DB::listen是一个监听器,用于监听数据库查询。这段代码注册了一个闭包(匿名函数)作为监听器,当执行数据库查询时,闭包会被调用,并且传递一个包含查询信息的对象作为参数。在这个例子中,传递给闭包的参数是 $query,它包含了执行的SQL语句和其他相关信息。

  • AppServiceProvider.php - boot() 增加
//AppServiceProvider
DB::listen(function ($query) {
    $sql = $query->sql;
    $bindings = $query->bindings;
    foreach ($bindings as $binding) {
    	$sql = preg_replace('/\?/', is_numeric($binding) ? $binding : "'$binding'", $sql, 1);
    }
	\App\Traits\LoggerSendMsgTrait::logger($sql, 'pine');
});

我们首先使用 $query->sql 获取原始的SQL语句。然后,我们遍历 $query->bindings 来获取绑定的参数,并将它们替换到SQL语句中的问号(?)位置。这里使用了 preg_replace 函数来实现替换,最后将sql写入到文件中。

标签:laravel,数据库,binding,查询,sql,query,bindings,监听
From: https://www.cnblogs.com/pine007/p/18167355

相关文章

  • SQL Server实战三:数据库表完整性约束及索引、视图的创建、编辑与删除
      本文介绍基于MicrosoftSQLServer软件,实现数据库表完整性约束、索引与视图的创建、编辑与删除等操作的方法。目录1交互式为数据库表S创建PRIMARYKEY约束2交互式创建数据库表TEST_SC,创建PRIMARYKEY约束3T-SQL创建数据库表T的PRIMARYKEY约束4T-SQL创建数据库表TEST_C,以......
  • JMeter监听器
    一前言环境:window10JMter5.3简单的说下监听器的,实际压测中大家使用较多的都是第三方监控工具,监听工具只是在调试的时候使用二监听器先简单看下调试中常用的三种监听器监听器的作用查看测试结果(从各种数据角度),如上显示的那样保存测试结果到文件中从文件中读取之前的测......
  • 数据库语法
    SQL注入一.数据库资料:1.数据库分为关系型数据库和非关系型数据库,关系型数据库的资料会储存成表格的形式,表格内的资料有各种属性,以此来进行区分,属性可以被设置成primarykey(主键),它可以唯一的表示每一笔资料,比如:2.属性还可以被设置成foreignkey(外键),这样的属性会和另外一个表格或......
  • java 数据库编程(一)JDBC连接Sql Server数据库
    java数据库编程(一)JDBC连接SqlServer数据库一、JDBC简介java数据库连接技术(JavaDatabaseConnection,JDBC)是由java提供的一组与平台无关的数据库的操作标准,其本身由一类与接口组成,并且在操作中将按照严格的顺序执行。由于数据库属于资源操作,所以所有的数据库操作的最后必......
  • openGauss 查看数据库连接数
    查看数据库连接数背景信息当用户连接数达到上限后,无法建立新的连接。因此,当数据库管理员发现某用户无法连接到数据库时,需要查看是否连接数达到了上限。控制数据库连接的主要以下几种选项。全局的最大连接数:由运行参数max_connections指定。某用户的连接数:在创建用户时由CREAT......
  • linx使用命令还原数据库(source还原方式)
    进入到数据库mysql-udatatablename-p//参数解析:datatablename是连接数据库的用户输入数据库密码: 成功进入数据库: 2、可以查看当前用户有哪些数据库权限 showdatabases;3、进入到指定的数据库usetest;//参数解析:test-是数据库名称4、查看当前数据......
  • openGauss 查看数据库连接数
    查看数据库连接数背景信息当用户连接数达到上限后,无法建立新的连接。因此,当数据库管理员发现某用户无法连接到数据库时,需要查看是否连接数达到了上限。控制数据库连接的主要以下几种选项。全局的最大连接数:由运行参数max_connections指定。某用户的连接数:在创建用户时由CREAT......
  • python 操作数据库(mysql)
    python操作数据库,可以有如下几种方式。1.安装pymysql。(python的一个mysql的插件,意思就是这个服务本身就是通过python来进行安装的)2.安装mysql-connector。(数据库服务,类似java种的mysql-connector,通过mysql连接工具,可以连接上远程的mysql服务器)使用pip安装插件:python-mpip......
  • 分享几个MySQL数据库管理效率的利器
    本文转载出处:https://mp.weixin.qq.com/s?__biz=MzUzMTkyODc4NQ==&mid=2247486787&idx=1&sn=9738dd8565b0744c05bfb0fe44d2e990&chksm=faba4efdcdcdc7eb6e729ed6c941b064cf8c7c3a7d87eff491d32d4ee7f6423ebd230033d2cc&scene=178&cur_album_id=28693454862......
  • 为什么MySQL不是数据库类型
    MySQL实际上是一个关系型数据库管理系统(RDBMS),而不是一个数据库类型。这里的关键在于理解“数据库类型”和“数据库管理系统”之间的区别。数据库类型:通常指的是数据库模型或数据结构的分类,比如关系型数据库(如MySQL、Oracle、SQLServer等)和非关系型数据库(如MongoDB、Redis、C......