在 Laravel 3/4 中执行查询拉拉维尔 4+拉拉维尔 3

如何使用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?


答案 1

拉拉维尔 4+

Laravel 5 用户注意:在执行查询之前,需要调用。可以在运行查询的行的正上方或在中间件内部。DB::enableQueryLog()

在 Laravel 4 及更高版本中,您必须调用才能获取所有已运行的查询。DB::getQueryLog()

$queries = DB::getQueryLog();
$last_query = end($queries);

或者,您可以下载探查器包。我会推荐barryvdh/laravel-debugbar,这非常整洁。您可以阅读有关如何在其存储库中安装的说明。


拉拉维尔 3

在 Laravel 3 中,可以从调用类上的静态方法的模型获取上次执行的查询。Eloquentlast_queryDB

DB::last_query();

但是,这需要您在 中启用该选项。或者,@dualed 如前所述,您可以启用选项,in 或 调用,以使所有查询在当前请求及其执行时间内运行。profilerapplication/config/database.phpprofilerapplication/config/application.phpDB::profile()


答案 2

您可以在Laravel 3中启用“分析器”,方法是设置

'profiler' => true,

在您的和application/config/application.phpapplication/config/database.php

这将在每个页面的底部启用一个栏。它的功能之一是列出执行的查询以及每个查询花费的时间。

enter image description here


推荐