1. 程式人生 > >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日誌

相關文章:

相關推薦

laravel 利用監聽器進行sql語句記錄

利用監聽器進行sql語句記錄 1、監聽sql語句的事件類已經定義,直接建立監聽器類即可: # 監聽sql make:listener QueryListener --event=Illuminate\Database\Events\QueryExecut

利用反射生成SQL語句

mman com inf get bool 通過 公開 public .get // 修改學員信息的方法 public bool ModifyStudent(MODEL.Students model) { // 利用反映獲取類對所有屬性,用來動態生成SQL語句

三、使用PreparedStatement進行sql語句預處理

PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Statement的子介面,我們在執行查詢或者更新資料表資料的時候,拼寫SQL語句是一個很費力並且容易出錯的事

P6Spy sql語句記錄

P6Spy是一個可以用來在應用程式中攔截和修改資料操作語句的開源框架。 通過P6Spy我們可以對SQL語句進行攔截,相當於一個SQL語句的記錄器,這樣我們可以用它來作相關的分析,比如效能分析。 P6SPY提供瞭如下幾個功能: 記錄SQL語句的執行時間戳。  記錄SQL語

PDO進行sql語句預處理和操作結果集詳細介紹(二)

<span style="font-size:18px;">一:預處理語句及其繫結引數執行insert try { $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123

Ibatis,Mybatis利用log4j將SQL語句列印在控制檯

在做一個專案Demo的時候,使用MyBatis+Spring,發現寫好的SQL查詢出來不對勁,但是也沒報錯, 所以想到用日誌把SQL語句打出來.也參考了部分網友的程式碼,最後總結了一下,發現正常執行。 本人專案為Mybatis+SpringMVC,所有都已配置好,且正常執行

Oracle 建立索引及利用索引的SQL語句優化

資料庫索引: 索引有單列索引 複合索引之說 如何某表的某個欄位有主鍵約束和唯一性約束,則Oracle 則會自動在相應的約束列上建議唯一索引。資料庫索引主要進行提高訪問速度。 建設原則:  1、索引應該經常建在Where 子句經常用到的列上。如果某個大表經常使用某個欄位進行

利用EXPLAIN分析sql語句的效能

使用explain關鍵字可以模擬優化器執行SQL查詢語句,從而知道MySQL是如何處理你的sql語句,可以幫助選擇更好的索引和寫出更優化的查詢語句。。 使用explain我看可以sql執行的相關資訊: 表的讀取順序 資料讀取操作的操作型別 哪些索引可以使用

Laravel中執行原生SQL語句,使用paginate分頁

1、執行原生sqlpublic function getList($data){ //獲取前端傳過來的引數 $user = $data['userId']; $office = $data['officeId']; $key = $data['oneK

利用hackbar進行sql注入簡單例項

這個簡單的例項是對一個網址進行sql注入,獲得管理員的賬號和密碼 步驟如下: (1)先猜解當前網頁的欄位數 在hackbar的輸入框中輸入: http://www.xxx/news_deta

利用sql語句進行增刪改查

1.查詢   函式:raw(sql語句)   語法:Entry.objects.raw(sql)   返回:QuerySet 2.增刪改   from django.db import connection   def doSQL(request):     with connection.curso()

laravel 利用中介軟體進行操作日誌記錄

利用中介軟體進行操作日誌記錄過程: 1、建立中介軟體 php artisan make:middleware AdminOperationLog 2、生成了檔案./app/Http/Middleware/AdminOperationLog.php 程

sql語句優化一次進行多條記錄的-----插入和修改

更新: update t_student set name = 'timy' where id = 10 現在我要更新ID為10、12 、13的age等於10、12、13 UPDATE t_student SET age= CASEWHEN id 10 THEN10WHE

laravel中查看執行的SQL語句

model http nec 條件 alt 今天 不能 conn obj 今天想查看laravel框架中執行的SQL語句,百度了一圈,才找到,這文檔真心看著不爽,下面上查看方法 DB::connection()->enableQueryLog();

sql語句對列進行操作

tmp from num table 數據 code pda odi com 1 create table test_1( 2 tname number(20), 3 tage varchar2(1024), 4 tmessage varchar(1024)

一條sql語句update 多條記錄

key mysq ech tle date class spl imp set UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END

利用SQL語句查詢數據庫中所有表

結果集 sel clas 使用 創建 ref 註意 目錄 tails Oracle: SELECT * FROM ALL_TABLES;--系統裏有權限的表 SELECT * FROM DBA_TABLES;-- 系統表 SELECT * FROM USER_TA

查看 LaravelSQL 語句的方法

cast ams using state function when sql 查詢 clas 數據查詢 在使用 Laravel 的 Eloquent 進行數據查詢的時候,很多小夥伴都想看到背後執行的 SQL 語句到底是什麽樣的,這小筆錄就是解決這個小問題的: 在 Provi

數據庫優化之SQL語句優化-記錄

得到 顯式 重要 adding sys 狀態 檢驗 發現 最大數 1. 操作符優化 (a) IN 操作符 從Oracle執行的步驟來分析用IN的SQL與不用IN的SQL有以下區別: ORACLE試圖將其轉換成多個表的連接,如果轉換不成功則先執行IN裏面的子查詢,再查詢外層的

mysql中利用sql語句修改字段名稱,字段長度等操作

HA change 是我 重構 不為 ble 技術 網站重構 add 在網站重構中,通常會進行數據結構的修改,所以添加,刪除,增加mysql表的字段是難免的,有時為了方便,還會增加修改表或字段的註釋,把同字段屬性調整到一塊兒。這些操作可以在phpmyadmin或者別的mys