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