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

标签 php laravel orm eloquent laravel-query-builder

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

Note for Laravel 5 users: You'll need to call DB::enableQueryLog() before executing the query. Either just above the line that runs the query or inside a middleware.

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

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

或者您可以下载分析器包。我会推荐 barryvdh/laravel-debugbar , 这很整洁。您可以阅读他们的repository 中有关如何安装的说明。 .


Laravel 3

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

DB::last_query();

然而,这需要您在 application/config/database.php 中启用 profiler 选项。或者,正如@dualed 所提到的,您可以在 application/config/application.php 中启用 profiler 选项或调用 DB::profile() 获取在当前请求中运行的所有查询及其执行时间。

关于php - 获取在 Laravel 3/4 中执行的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14536165/

相关文章:

php - 变量类名忽略当前命名空间

jquery - 尝试在 axios 中显示 Laravel 验证错误

database - Laravel DB::rollback() 不适用于交易流程

java - 使用 JPA 更新

python - 哪个是在 Django 中查询的更好方法(原始查询与 ORM)?

php - 如何从mysql中获取分层菜单

php - 一个文件夹中有 100 万个或更多文件,用于包含(缓存)

php - 无法在 Laravel 中捕获 Cartalyst\Sentinel\Checkpoints\NotActivatedException

java - hibernate 状态下的未知实体

php - 使用 PDO 在两个数据库之间传输 mysql 表