実際の開発では、アセンブルされた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); } );
次に、印刷されたログが