Laravel框架實現(xiàn)利用監(jiān)聽器進(jìn)行sql語句記錄功能
本文實例講述了Laravel框架實現(xiàn)利用監(jiān)聽器進(jìn)行sql語句記錄功能。分享給大家供大家參考,具體如下:
利用監(jiān)聽器進(jìn)行sql語句記錄
1、監(jiān)聽sql語句的事件類已經(jīng)定義,直接創(chuàng)建監(jiān)聽器類即可:
# 監(jiān)聽sql make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted
2、監(jiān)聽器類代碼
./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、引入監(jiān)聽器
./app/Providers/EventServiceProvider.php
protected $listen = [ ... \Illuminate\Database\Events\QueryExecuted::class => [ 'App\Listeners\QueryListener' ], ... ];
此時進(jìn)行操作時就會記錄sql日志
相關(guān)文章:
Laravel框架實現(xiàn)利用中間件進(jìn)行操作日志記錄功能
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Laravel框架的PHP程序設(shè)計有所幫助。
相關(guān)文章
詳解php中生成標(biāo)準(zhǔn)uuid(guid)的方法
這篇文章主要介紹了php中生成標(biāo)準(zhǔn)uuid(guid)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04深入淺析php中sprintf與printf函數(shù)的用法及區(qū)別
這篇文章主要介紹了php中sprintf與printf函數(shù)的用法及區(qū)別,涉及到printf函數(shù)、sprintf函數(shù)相關(guān)資料,需要的朋友可以參考下2016-01-01采用thinkphp自帶方法生成靜態(tài)html文件詳解
thinkphp本身自帶了一個有效的生成靜態(tài)頁的方法,這篇文章主要介紹了采用thinkphp自帶方法生成靜態(tài)html文件2014-06-06