其實在執行程式碼的同時看一看當前的SQL是一個好習慣,一方面可以檢查一下程式碼的錯誤,另一方面可以檢查一下模型關聯是否因為沒有使用
with
而導致多次查詢。
新建一個檔案 app\Listeners\QueryListener.php
<?php
namespace App\Listeners;
use Illuminate\Database\Events\QueryExecuted;
class QueryListener
{
public function handle(QueryExecuted $event)
{
$sql = str_replace("?", "'%s'", $event->sql);
try {
$log = vsprintf($sql, $event->bindings);
} catch (\Exception $e) {
$log = $sql;
}
$file = storage_path('logs/'.date('Ymd').'_sql.txt');
file_put_contents($file, $log.PHP_EOL, FILE_APPEND);
}
}
修改 app/Providers/EventServiceProvider.php
protected $listen = [
'Illuminate\Database\Events\QueryExecuted' => [
'App\Listeners\QueryListener'
]
];
本作品採用《CC 協議》,轉載必須註明作者和本文連結