Maison > développement back-end > tutoriel php > À propos de Laravel5. Comment imprimer l'instruction SQL exécutée

À propos de Laravel5. Comment imprimer l'instruction SQL exécutée

不言
Libérer: 2023-03-31 21:44:02
original
3006 Les gens l'ont consulté

Cet article présente principalement la méthode de Laravel5.* pour imprimer l'instruction SQL exécutée. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Cet article présente la méthode de Laravel5.* pour imprimer. out. La méthode d'exécution de l'instruction sql est partagée avec tout le monde, comme suit :

Ouvrez appProvidersAppServiceProvider.PHP et ajoutez le contenu suivant dans la méthode de démarrage

Versions inférieures à 5.2

// 先引入DB 
use DB;
// 或者直接使用 \DB::
 DB::listen(function($sql, $bindings, $time) {
        dump($sql);
      });
Copier après la connexion

Version 5.2 et supérieure

use DB;
// 或者直接使用 \DB::
// 只能接受一个参数

QueryExecuted {#84 ▼
 +sql: "select * from `posts` where `slug` = ? limit 1"
 +bindings: array:1 [▶]
 +time: 0.59
 +connection: MySqlConnection {#85 ▶}
 +connectionName: "mysql"
}

 DB::listen(function($sql) {
        dump($sql);
        // echo $sql->sql;
        // dump($sql->bindings);
      });

// 如果要放入日志文件中
DB::listen(
  function ($sql) {
    // $sql is an object with the properties:
    // sql: The query
    // bindings: the sql query variables
    // time: The execution time for the query
    // connectionName: The name of the connection

    // To save the executed queries to file:
    // Process the sql and the bindings:
    foreach ($sql->bindings as $i => $binding) {
      if ($binding instanceof \DateTime) {
        $sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
      } else {
        if (is_string($binding)) {
          $sql->bindings[$i] = "'$binding'";
        }
      }
    }

    // Insert bindings into query
    $query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);

    $query = vsprintf($query, $sql->bindings);

    // Save the query to file
    $logFile = fopen(
      storage_path('logs' . DIRECTORY_SEPARATOR . date('Y-m-d') . '_query.log'),
      'a+'
    );
    fwrite($logFile, date('Y-m-d H:i:s') . ': ' . $query . PHP_EOL);
    fclose($logFile);
  }
);
Copier après la connexion

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à tout le monde. L'apprentissage sera utile. Pour plus de contenu connexe, veuillez faire attention au site Web PHP en chinois !

Recommandations associées :

Réussi Développement "standard" Laravel de la fonction d'envoi de code de vérification SMS

Apprentissage du transfert de tableau à afficher dans le framework Laravel5

Apprentissage des processus de base des modèles, contrôleurs et vues du framework Laravel 5

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!

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