LaravelはSQLログビューのデバッグと印刷に便利です

実際の開発では、アセンブルされたSQLが必要かどうかを確認する必要があります。結果を表示するには、SQLを直接印刷します。

DBに付属のgetQueryLogメソッドを使用して、直接印刷します。

 

Illuminate \ Support \ Facades \ DBを使用します。
DB :: connection()-> enableQueryLog(); //启QueryLog2を開きます\ App \ User :: find(1); 3 dump(DB :: getQueryLog());

出口;

直感的に表示するのではなく、次の結果を取得します。

  array:1 [
    0 => array:3 [
      "query" => "select * from` fook_platform_ordercode` where` fook_platform_ordercode`.`id` =?limit 1 "
      " bindings "=> array:1 [
        0 => 1
      ]
      "時間" => 11.47
    ]
  ]

ここで、別のメソッドを使用して完全なSQLステートメントを出力し、次のコードをAppServiceProviderのbootメソッドにコピーします。

コードは次のように表示されます。
\ DB :: listen(
    function($ sql){ 
        foreach($ sql-> bindings as $ i => $ binding){ 
            if($ binding instanceof \ DateTime){ 
                $ sql-> bindings [$ i] = $ binding- > format( '\' Ymd H:i:s \ ''); 
            } else { 
                if(is_string($ binding)){ 
                    $ sql-> bindings [$ i] = "'$ binding'"; 
                } 
            } 
        } 

        / /バインディングをクエリに挿入
        $ query = str_replace(array( '%'、 '?')、array( '%%'、 '%s')、$ sql-> sql); 

        $ query = vsprintf($ query、$ sql-> bindings); 

        //クエリをファイルに保存します
        $ logFile = fopen(
            storage_path( 'logs'。DIRECTORY_SEPARATOR。date(' Ym-d ')。'_query.log')、
            'a +' 
        ); 
        fwrite($ logFile、date( 'Ymd H:i:s')。 ':'。$query。PHP_EOL); 
        fclose($ logFile); 
    } 
);

次に、印刷されたログが

おすすめ

転載: blog.csdn.net/lchmyhua88/article/details/107298222