获取在Laravel 3/4中执行的查询
获取在Laravel 3/4中执行的查询
如何在Laravel 3/4中使用Laravel Query Builder或Eloquent ORM检索已执行的原始SQL查询?
例如,像这样的东西:
DB::table('users')->where_status(1)->get();
或者:
(posts (id, user_id, ...)) User::find(1)->posts->get();
否则,至少可以如何将所有执行的查询保存到laravel.log中?
admin 更改状态以发布 2023年5月24日
Laravel 4+
注意 Laravel 5 用户:你需要在执行查询之前调用
DB::enableQueryLog()
。可以在运行查询的代码行上方或在middleware中调用。
在 Laravel 4 及更高版本中,你需要调用DB::getQueryLog()
来获取所有已运行的查询。
$queries = DB::getQueryLog(); $last_query = end($queries);
或者你可以下载一个分析工具包。我推荐使用barryvdh/laravel-debugbar,非常好用。你可以查看他们在repository中的安装说明。
Laravel 3
在 Laravel 3 中,你可以通过在DB
类上调用静态方法last_query
来获取一个Eloquent
模型的最后一次执行的查询。
DB::last_query();
但是,这需要在application/config/database.php
中启用profiler
选项。或者,你可以像@dualed提到的那样,在application/config/application.php
中启用profiler
选项,或者调用DB::profile()
来获取当前请求中所有查询和它们的执行时间。