一尘不染

获取在Laravel 3/4中执行的查询

php

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


阅读 202

收藏
2020-05-29

共1个答案

一尘不染

Laravel 4+

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

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

或者,您可以下载探查器软件包。我建议使用barryvdh / laravel-
debugbar
,它非常简洁。您可以阅读有关如何在其存储库中进行安装的说明。

Laravel 5用户注意事项:DB::enableQueryLog()在执行查询之前,您需要先致电。在运行查询的行的上方或在中间件内部。


Laravel 3

在Laravel 3中,您可以从Eloquent调用类last_query上静态方法的模型中获取最后执行的查询DB

DB::last_query();

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

2020-05-29