简单实现Laravel获取当前执行的SQL
其实在执行代码的同时看一看当前的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 协议》,转载必须注明作者和本文链接
推荐文章: