Heim >Backend-Entwicklung >PHP-Tutorial >Das Laravel-Framework implementiert die Funktion, Listener zum Aufzeichnen von SQL-Anweisungen zu verwenden

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

不言
不言Original
2018-06-07 09:48:201899Durchsuche

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

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();
      }
    }
  }
}

3. Listener vorstellen

./app /Providers /EventServiceProvider.php

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

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!

Stellungnahme:
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