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

8 浏览
0 Comments

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

如何在Laravel 3/4中使用Laravel Query Builder或Eloquent ORM检索已执行的原始SQL查询?

例如,像这样的东西:

DB::table('users')->where_status(1)->get();

或者:

(posts (id, user_id, ...))
User::find(1)->posts->get();

否则,至少可以如何将所有执行的查询保存到laravel.log中?

admin 更改状态以发布 2023年5月24日
0
0 Comments

你可以通过在Laravel 3中设置

'profiler' => true,

在你的application/config/application.phpapplication/config/database.php中启用“Profiler”。

这将在每个页面的底部显示一个条,其中一项功能是列出执行的查询以及每个查询所需的时间。

enter image description here

0
0 Comments

Laravel 4+

注意 Laravel 5 用户:你需要在执行查询之前调用DB::enableQueryLog()。可以在运行查询的代码行上方或在middleware中调用。

在 Laravel 4 及更高版本中,你需要调用DB::getQueryLog()来获取所有已运行的查询。

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

或者你可以下载一个分析工具包。我推荐使用barryvdh/laravel-debugbar,非常好用。你可以查看他们在repository中的安装说明。


Laravel 3

在 Laravel 3 中,你可以通过在DB类上调用静态方法last_query来获取一个Eloquent模型的最后一次执行的查询。

DB::last_query();

但是,这需要在application/config/database.php中启用profiler选项。或者,你可以像@dualed提到的那样,在application/config/application.php中启用profiler选项,或者调用DB::profile()来获取当前请求中所有查询和它们的执行时间。

0