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("?", "'%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. Listener vorstellen
./app /Providers /EventServiceProvider.php
protected $listen = [ ... \Illuminate\Database\Events\QueryExecuted::class => [ 'App\Listeners\QueryListener' ], ... ];
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!