Maison > développement back-end > tutoriel php > Le framework Laravel implémente la fonction d'utilisation d'écouteurs pour enregistrer les instructions SQL

Le framework Laravel implémente la fonction d'utilisation d'écouteurs pour enregistrer les instructions SQL

不言
Libérer: 2023-03-30 10:46:02
original
1868 Les gens l'ont consulté

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
Copier après la connexion

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("?", "&#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();
      }
    }
  }
}
Copier après la connexion

3. Présentez l'auditeur

. /app/Providers/EventServiceProvider.php

protected $listen = [
    ...
    \Illuminate\Database\Events\QueryExecuted::class => [
      &#39;App\Listeners\QueryListener&#39;
    ],
    ...
  ];
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal