Cet article présente principalement la méthode d'impression des instructions SQL exécutées dans Laravel5.* Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer. J'espère qu'il pourra aider tout le monde.
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); });
Versions 5.2 et supérieures
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); } );
Recommandations associées :
Instruction SQL pour implémenter la fonction de formatage du code PHP
Comment Laravel enregistre les instructions SQL
Méthode d'implémentation Thinkphp pour l'exécution d'instructions SQL natives
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!