欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel 打印执行的 sql 打印最近执行的 sql mysql 至少laravel 5.2是管用的 有大用 有大大用

//下面是自己亲自做的 肯定有用


//Laravel 5 中需要开启QueryLog
\DB::enableQueryLog();
//先是进行监听
\DB::listen(function($sql) {
    dump($sql);
     echo $sql->sql;
     dump($sql->bindings);
     dump($sql->time);
});


//然后再执行 sql
$student = \DB::table('users')->get();
exit;


应该同样可以使用 $student = DB::table('users')->get()->tosql(); tosql() tosql 来获得 sql 语句


可以通过下面代码获取最近执行的SQL查询语句:

  1. //Laravel 5 中需要开启QueryLog

  2. DB::connection()->enableQueryLog();

  3. //这里为查询操作

  4. print_r(DB::getQueryLog())

也可以通过事件监听的方法来获取:


  1. Event::listen('illuminate.query', function($query){

  2. var_dump($query);

  3. });

来自 http://blog.csdn.net/sanbingyutuoniao123/article/details/54138065

Laravel5.* 打印出执行的sql语句

标签: Laravel
 7850人阅读 评论(0) 收藏 举报
 分类:

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

5.2以下版本

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

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

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


普通分类: