如何使用Laravel Query Builder或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 4和更高版本中,您必须调用DB::getQueryLog()以获取所有已运行的查询。
DB::getQueryLog()
$queries = DB::getQueryLog(); $last_query = end($queries);
或者,您可以下载探查器软件包。我建议使用barryvdh / laravel- debugbar,它非常简洁。您可以阅读有关如何在其存储库中进行安装的说明。
Laravel 5用户注意事项:DB::enableQueryLog()在执行查询之前,您需要先致电。在运行查询的行的上方或在中间件内部。
DB::enableQueryLog()
在Laravel 3中,您可以从Eloquent调用类last_query上静态方法的模型中获取最后执行的查询DB。
Eloquent
last_query
DB
DB::last_query();
但是,这要求您在中启用该profiler选项application/config/database.php。或者,如@dualed所述,您可以启用profilerin application/config/application.php或调用此选项,DB::profile()以使所有查询在当前请求及其执行时间中运行。
profiler
application/config/database.php
application/config/application.php
DB::profile()