我试图弄清楚如何获取正在执行的原始 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/