Laravel框架實(shí)現(xiàn)利用監(jiān)聽(tīng)器進(jìn)行sql語(yǔ)句記錄功能
本文實(shí)例講述了Laravel框架實(shí)現(xiàn)利用監(jiān)聽(tīng)器進(jìn)行sql語(yǔ)句記錄功能。分享給大家供大家參考,具體如下:
利用監(jiān)聽(tīng)器進(jìn)行sql語(yǔ)句記錄
1、監(jiān)聽(tīng)sql語(yǔ)句的事件類(lèi)已經(jīng)定義,直接創(chuàng)建監(jiān)聽(tīng)器類(lèi)即可:
# 監(jiān)聽(tīng)sql make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted
2、監(jiān)聽(tīng)器類(lèi)代碼
./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定義是依賴(lài)于中間件記錄操作日志代碼 $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)聽(tīng)器
./app/Providers/EventServiceProvider.php
protected $listen = [ ... \Illuminate\Database\Events\QueryExecuted::class => [ 'App\Listeners\QueryListener' ], ... ];
此時(shí)進(jìn)行操作時(shí)就會(huì)記錄sql日志
相關(guān)文章:
Laravel框架實(shí)現(xiàn)利用中間件進(jìn)行操作日志記錄功能
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Laravel框架入門(mén)與進(jìn)階教程》、《php優(yōu)秀開(kāi)發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。
- Laravel SQL語(yǔ)句記錄方式(推薦)
- Laravel5.* 打印出執(zhí)行的sql語(yǔ)句的方法
- Laravel框架執(zhí)行原生SQL語(yǔ)句及使用paginate分頁(yè)的方法
- laravel實(shí)現(xiàn)查詢(xún)最后執(zhí)行的一條sql語(yǔ)句的方法
- Laravel使用原生sql語(yǔ)句并調(diào)用的方法
- laravel 獲取某個(gè)查詢(xún)的查詢(xún)SQL語(yǔ)句方法
- Laravel 使用查詢(xún)構(gòu)造器配合原生sql語(yǔ)句查詢(xún)的例子
- Laravel中如何輕松容易的輸出完整的SQL語(yǔ)句
相關(guān)文章
詳解php中生成標(biāo)準(zhǔn)uuid(guid)的方法
這篇文章主要介紹了php中生成標(biāo)準(zhǔn)uuid(guid)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Laravel 5 框架入門(mén)(四)完結(jié)篇
本文是本系列教程的完結(jié)篇,我們將一起給 Page 加入評(píng)論功能,讓游客在前臺(tái)頁(yè)面可以查看、提交、回復(fù)評(píng)論,同時(shí)我們將在后臺(tái)完善評(píng)論管理功能,可以刪除、編輯評(píng)論。2015-04-04深入淺析php中sprintf與printf函數(shù)的用法及區(qū)別
這篇文章主要介紹了php中sprintf與printf函數(shù)的用法及區(qū)別,涉及到printf函數(shù)、sprintf函數(shù)相關(guān)資料,需要的朋友可以參考下2016-01-01一個(gè)非常完美的讀寫(xiě)ini格式的PHP配置類(lèi)分享
這篇文章主要介紹了一個(gè)非常完美的讀寫(xiě)ini格式的PHP配置類(lèi)分享,本文給出類(lèi)代碼、使用例子和配置文件例子,需要的朋友可以參考下2015-02-02采用thinkphp自帶方法生成靜態(tài)html文件詳解
thinkphp本身自帶了一個(gè)有效的生成靜態(tài)頁(yè)的方法,這篇文章主要介紹了采用thinkphp自帶方法生成靜態(tài)html文件2014-06-06php使用異或?qū)崿F(xiàn)的加密解密實(shí)例
字符串的加密解密在數(shù)據(jù)的處理中應(yīng)該是經(jīng)常使用的,但MD5加密是不可逆的,所以自能自己動(dòng)手寫(xiě)一個(gè)加密解密函數(shù),思路很。網(wǎng)上看了幾個(gè)用異或?qū)崿F(xiàn)的思路,看懂后就自己寫(xiě)了一下。異或的思路很簡(jiǎn)單,用個(gè)公示簡(jiǎn)單的表示下吧2013-09-09PHP實(shí)現(xiàn)抽獎(jiǎng)功能實(shí)例代碼
這篇文章主要介紹了PHP如何實(shí)現(xiàn)抽獎(jiǎng)功能,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06