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
查看 Laravel 的 SQL 語句的方法
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