温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Laravel框架中使用监听器实现sql语句记录功能

发布时间:2021-05-22 16:37:07 来源:亿速云 阅读:230 作者:Leah 栏目:开发技术

今天就跟大家聊聊有关怎么在Laravel框架中使用监听器实现sql语句记录功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1、监听sql语句的事件类已经定义,直接创建监听器类即可:

# 监听sql make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted

2、监听器类代码

./app/Listeners/QueryListener.php

<?php namespace App\Listeners; use Illuminate\Database\Events\QueryExecuted; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use App\Http\Models\OperationLog; class QueryListener {   /**    * Create the event listener.    *    * @return void    */   public function __construct()   {     //   }   /**    * Handle the event.    *    * @param QueryExecuted $event    * @return void    */   public function handle(QueryExecuted $event)   {     $sql = str_replace("?", "'%s'", $event->sql);     $log = vsprintf($sql, $event->bindings);     # 此处$uid定义是依赖于中间件记录操作日志代码     $uid = isset($_SERVER['admin_uid']) ? $_SERVER['admin_uid'] : 0;     if('select' != substr($log , 0 , 6)){       if('insert into `operationLog`' != substr($log , 0 , 26)){         $OperationLog = new OperationLog();         $OperationLog->uid = $uid;         $OperationLog->sql = $log;         $OperationLog->input = '';         $OperationLog->save();       }     }   } }

3、引入监听器

./app/Providers/EventServiceProvider.php

protected $listen = [     ...     \Illuminate\Database\Events\QueryExecuted::class => [       'App\Listeners\QueryListener'     ],     ...   ];

Laravel 是什么

Laravel 是一套简洁、优雅的PHP Web开发框架。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

看完上述内容,你们对怎么在Laravel框架中使用监听器实现sql语句记录功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI