Das Laravel-Framework implementiert die Funktion, Listener zum Aufzeichnen von SQL-Anweisungen zu verwenden

不言
Freigeben: 2023-03-30 10:46:02
Original
1801 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich das Laravel-Framework vorgestellt, um die Funktion der Verwendung von Listenern zum Aufzeichnen von SQL-Anweisungen zu implementieren. Er analysiert die Erstellung und Einführung von Laravel-Framework-Listenern und die damit verbundenen Bedienfähigkeiten bei der Verwendung von Listenern zum Aufzeichnen von SQL-Anweisungen in Form von Beispielen. Freunde, die es brauchen, können als Referenz

Das Beispiel in diesem Artikel beschreibt, wie das Laravel-Framework die Funktion implementiert, Listener zum Aufzeichnen von SQL-Anweisungen zu verwenden. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Verwenden Sie Listener, um SQL-Anweisungen aufzuzeichnen

1 Die Ereignisklasse zum Überwachen von SQL-Anweisungen wurde definiert, erstellen Sie sie einfach die Listener-Klasse direkt:

# 监听sql
make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted
Nach dem Login kopieren

2. Listener-Klassencode

./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();
      }
    }
  }
}
Nach dem Login kopieren

3. Listener vorstellen

./app /Providers /EventServiceProvider.php

protected $listen = [
    ...
    \Illuminate\Database\Events\QueryExecuted::class => [
      &#39;App\Listeners\QueryListener&#39;
    ],
    ...
  ];
Nach dem Login kopieren

Das SQL-Protokoll wird aufgezeichnet, wenn der Vorgang zu diesem Zeitpunkt ausgeführt wird

Verwandte Empfehlungen :

So implementieren Sie Fuzzy-Matching und Abfragefunktionen mit mehreren Bedingungen in Laravel5

Das obige ist der detaillierte Inhalt vonDas Laravel-Framework implementiert die Funktion, Listener zum Aufzeichnen von SQL-Anweisungen zu verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!