這篇文章主要介紹了Laravel框架實現利用監聽器進行sql語句記錄功能,結合實例形式分析了Laravel框架監聽器的創建、引入以及使用監聽器記錄sql語句的相關操作技巧,需要的朋友可以參考下方
本文實例講述了Laravel框架實作利用監聽器進行sql語句記錄功能。分享給大家供大家參考,具體如下:
利用監聽器進行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' ], ... ];#此時進行操作時就會記錄sql日誌
##相關推薦:
Laravel5中實作模糊匹配加多條件查詢功能的方法以上是Laravel框架實作利用監聽器進行sql語句記錄功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!