Home > Backend Development > PHP Tutorial > Laravel5.* print out the executed sql statement

Laravel5.* print out the executed sql statement

小云云
Release: 2023-03-19 20:08:02
Original
2253 people have browsed it

This article mainly introduces the method of printing out executed sql statements in Laravel5.*, which has certain reference value. Interested friends can refer to it. I hope it can help everyone.

Open app\Providers\AppServiceProvider.PHP and add the following content in the boot method

Versions below 5.2


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

5.2 and above Version


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);
  }
);
Copy after login

Related recommendations:

SQL statement to implement formatting function php code

How Laravel records SQL statements

thinkphp implementation method of executing native SQL statements

The above is the detailed content of Laravel5.* print out the executed sql statement. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
laravel5 namespace problem
From 1970-01-01 08:00:00
0
0
0
How do you use smarty to integrate laravel5?
From 1970-01-01 08:00:00
0
0
0
Merge requirejs in laravel5
From 1970-01-01 08:00:00
0
0
0
vendor - laravel5 problems after cloning from git
From 1970-01-01 08:00:00
0
0
0
laravel5 cannot start
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template