Laravel框架實作利用監聽器進行sql語句記錄功能

不言
發布: 2023-03-30 10:46:02
原創
1800 人瀏覽過

這篇文章主要介紹了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("?", "&#39;%s&#39;", $event->sql);
    $log = vsprintf($sql, $event->bindings);
    # 此处$uid定义是依赖于中间件记录操作日志代码
    $uid = isset($_SERVER[&#39;admin_uid&#39;]) ? $_SERVER[&#39;admin_uid&#39;] : 0;
    if(&#39;select&#39; != substr($log , 0 , 6)){
      if(&#39;insert into `operationLog`&#39; != substr($log , 0 , 26)){
        $OperationLog = new OperationLog();
        $OperationLog->uid = $uid;
        $OperationLog->sql = $log;
        $OperationLog->input = &#39;&#39;;
        $OperationLog->save();
      }
    }
  }
}
登入後複製

#3、引入監聽器

##./app/Providers /EventServiceProvider.php

protected $listen = [
    ...
    \Illuminate\Database\Events\QueryExecuted::class => [
      &#39;App\Listeners\QueryListener&#39;
    ],
    ...
  ];
登入後複製

#此時進行操作時就會記錄sql日誌

##相關推薦:

Laravel5中實作模糊匹配加多條件查詢功能的方法

以上是Laravel框架實作利用監聽器進行sql語句記錄功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!