直接打印
use Log; use DB; DB::connection()->enableQueryLog(); Log::info(DB::getQueryLog()); //print_r($orm->toSql());print_r($orm->getBindings());exit; DB::connection()->enableQueryLog(); Log::info(DB::getQueryLog());
监听
若要打印完整的SQL语句日志可在 app/providers/AppServicesProviders.php
文件的 boot
方法编写如下代码
DB::listen( function ($sql) { 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); });
或者
DB::listen(function ($query) { $tmp = str_replace('?', '"'.'%s'.'"', $query->sql); $qBindings = []; foreach ($query->bindings as $key => $value) { if (is_numeric($key)) { $qBindings[] = $value; } else { $tmp = str_replace(':'.$key, '"'.$value.'"', $tmp); } } $tmp = vsprintf($tmp, $qBindings); $tmp = str_replace("\", "", $tmp); Log::info(' execution time: '.$query->time.'ms; '.$tmp." "); });
转载至:https://www.jianshu.com/p/bb6fdbf5445e