Maison >développement back-end >tutoriel php >Le framework Laravel implémente la fonction d'utilisation d'écouteurs pour enregistrer les instructions SQL
Cet article présente principalement le framework Laravel pour implémenter la fonction d'utilisation d'écouteurs pour enregistrer des instructions SQL. Il analyse la création et l'introduction des écouteurs du framework Laravel et les compétences opérationnelles associées à l'utilisation d'écouteurs pour enregistrer des instructions SQL sous forme d'exemples. Les amis qui en ont besoin peuvent Pour référence,
L'exemple de cet article décrit comment le framework Laravel implémente la fonction d'utilisation d'écouteurs pour enregistrer des instructions SQL. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Utilisez des écouteurs pour enregistrer les instructions SQL
1 La classe d'événements pour surveiller les instructions SQL a été définie, créez simplement. la classe d'auditeur directement :
# 监听sql make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted
2. Code de classe d'auditeur
. /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. Présentez l'auditeur
. /app/Providers/EventServiceProvider.php
protected $listen = [ ... \Illuminate\Database\Events\QueryExecuted::class => [ 'App\Listeners\QueryListener' ], ... ];
Lorsque l'opération est effectuée à ce moment, le journal SQL sera enregistré
Recommandations associées :
Comment implémenter la fonction de correspondance floue et de requête multi-conditions dans Laravel5
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!