Laravel5.打印出执行的sql语句的方法

2018-09-07 13:41

阅读:247

  本文介绍了Laravel5.* 打印出执行的sql语句的方法,分享给大家,具体如下:

  打开app\Providers\AppServiceProvider.PHP,在boot方法中添加如下内容

  5.2以下版本

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

  5.2及以上版本

   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); } );

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


评论


亲,登录后才可以留言!