>백엔드 개발 >PHP 튜토리얼 >Laravel5에 대해 실행된 sql문을 출력하는 방법

Laravel5에 대해 실행된 sql문을 출력하는 방법

不言
不言원래의
2018-06-13 10:56:583008검색

본 글에서는 실행된 sql문을 출력하는 Laravel5.*의 방법을 주로 소개하고 있는데, 참고할만한 값이 있으니 관심 있는 분들은 참고하시면 됩니다.

본 글에서는 실행된 sql문을 출력하는 Laravel5.*의 방법을 소개합니다. , 모든 사람과 공유하세요. 세부 정보는 다음과 같습니다.

appProvidersAppServiceProvider.PHP를 열고 부팅 방법

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

에 다음 콘텐츠를 추가하세요.

위 내용은 이 글의 내용입니다. 모든 내용이 여러분의 공부에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 추천:

패스 Laravel "표준" 개발 SMS 인증 코드 전송 기능

Laravel 5 프레임워크에서 배열을 뷰로 전송하는 방법 학습

Laravel 5 프레임워크의 모델 및 컨트롤러와 뷰의 기본 프로세스에 대해 학습

위 내용은 Laravel5에 대해 실행된 sql문을 출력하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.