php - Laravel 5 Eloquent : How to get raw sql that is being executed?(绑定(bind)数据)

标签 php mysql laravel-5

我试图弄清楚如何获取正在执行的原始 sql 查询,包括其中的绑定(bind)数据。这是我得到的:

\DB::connection()->enableQueryLog();
$query = \DB::getQueryLog();
$lastQuery = end($query);

结果如下:

array(3) {
  ["query"]=>
  string(57) "select * from `table_1` where `field_1` = ? limit 1"
  ["bindings"]=>
  array(1) {
    [0]=>
    string(34) "xyz"
  }
}

那么我如何获取像这样的完整 sql 查询的转储(老式的好方法)?

select * from `table_1` where `field_1` = 'xyz' limit 1

谢谢

最佳答案

您可能想查看 Laravel debugbar .没有它我不会开发 Laravel 应用程序。它将为您提供所有查询(包括重复查询和 ajax 查询)的细目分类,以及它们的执行速度以及对调用它们的 Controller /方法中的行的注释。 (它还提供了更多信息,例如 View 、登机口、路线等)

此外,Laravel 有一个 toSql() 方法,您可以使用它来代替您的示例。 它只会像您的示例一样向您显示准备好的语句,但它至少更简洁一些。如果您使用 toSql(),则必须在执行查询之前应用它。

$foo = Foo::where('bar', 'baz');
$foo_sql = $foo->toSql();
$foo->get();

关于php - Laravel 5 Eloquent : How to get raw sql that is being executed?(绑定(bind)数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39270169/

相关文章:

数字格式的PHP格式表

java - jsql解析器中的PlainSelect和SetOperationList

php - Mysql - 从类别中获取最后一篇文章

javascript - 在 Vue.js + Laravel 中将 $var 传递到 @{{ }} 中不起作用

android - Laravel RESTful API 与 Android 应用程序

php - 如何检索错误的字符集编码字符串?

php - 使 php 包含在子目录中工作

php - php和mysql中的评论系统

mysql - 是否可以将 SMT(单一消息转换)仅应用于来自指定主题的消息

node.js - 在 cli 中运行 gulp 时未找到 Laravel Elixir