如何使用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
在Laravel 4及更高版本中,您必须调用DB :: getQueryLog()来获取所有运行的查询.
$queries = DB::getQueryLog();
$last_query = end($queries);
或者您可以下载分析器包.我推荐barryvdh/laravel-debugbar,非常整洁.您可以阅读有关如何在其repository中安装的说明.
Laravel 5用户注意事项:在执行查询之前,您需要调用DB :: enableQueryLog().在运行查询的行上方或在中间件内.
Laravel 3
在Laravel 3中,您可以从Eloquent模型中获取最后执行的查询,该模型在DB类上调用静态方法last_query.
DB::last_query();
但是,这需要您在application / config / database.PHP中启用profiler选项.或者,正如@dualed所提到的,您可以在application / config / application.PHP中启用探查器选项,或者调用DB :: profile()以获取在当前请求中运行的所有查询及其执行时间.