我如何让查询构建器将其原始的SQL查询输出为字符串?

16 浏览
0 Comments

我如何让查询构建器将其原始的SQL查询输出为字符串?

给定以下代码:

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

我想获取数据库查询构建器将生成的原始SQL查询字符串。在这个例子中,它应该是SELECT * FROM users

我该怎么做?

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

要在屏幕上输出最后运行的查询,可以使用以下代码:

\DB::enableQueryLog(); // Enable query log
// Your Eloquent query executed by using get()
dd(\DB::getQueryLog()); // Show results of log

我相信最近的查询会在数组的底部。

你会得到像这样的东西:

array(1) {
  [0]=>
  array(3) {
    ["query"]=>
    string(21) "select * from "users""
    ["bindings"]=>
    array(0) {
    }
    ["time"]=>
    string(4) "0.92"
  }
}

(感谢Joshua在下面的评论中提供的帮助。)

0
0 Comments

QueryBuilder实例中使用toSql()方法。
DB::table('users')->toSql()将返回以下内容:

select * from `users`

这比连接事件监听器更简单,还可以让您在构建查询时随时检查查询的实际样式。
注意:此方法适用于查询构建器或Eloquent,但是要使用toSql()而不是first()get()
您不能使用此方法同时运行查询并获取SQL。

0