如何使用Laravel查询生成器或Eloquent ORM在Laravel 3/4中检索原始执行的SQL查询?
例如,如下所示:
DB::table('users')->where_status(1)->get();
或者:
(posts (id, user_id, ...))
User::find(1)->posts->get();
否则,至少我该如何将执行的所有查询保存到laravel.日志(log)
如何使用Laravel查询生成器或Eloquent ORM在Laravel 3/4中检索原始执行的SQL查询?
例如,如下所示:
DB::table('users')->where_status(1)->get();
或者:
(posts (id, user_id, ...))
User::find(1)->posts->get();
否则,至少我该如何将执行的所有查询保存到laravel.日志(log)
Note for Laravel 5 users:在执行查询之前,您需要拨打
DB::enableQueryLog()
.或者就在运行查询的行的上方,或者在中间件内部.
在Laravel 4及更高版本中,您必须拨打DB::getQueryLog()
才能获得所有已运行的查询.
$queries = DB::getQueryLog();
$last_query = end($queries);
或者,您可以下载一个分析器软件包.我推荐barryvdh/laravel-debugbar个,挺不错的.您可以阅读有关如何在其repository中安装的说明.
在Laravel3中,您可以从调用DB
类的静态方法last_query
的Eloquent
模型中获取最后执行的查询.
DB::last_query();
但是,这需要您在application/config/database.php
中启用profiler
选项.或者,正如@dued提到的,您可以在application/config/application.php
或呼叫DB::profile()
中启用profiler
选项,以获取当前请求中运行的所有查询及其执行时间.