监听ORM背后的sql语句。

把它放在 routes.php 文件中:

\Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) {

    echo'<pre>';

    var_dump($query->sql);

    var_dump($query->bindings);

    var_dump($query->time);

    echo'</pre>';

});

由 msurguy 提交,此页面中的源代码。您将在注释中找到 laravel 5.2 的此修复代码。

效果图如下:

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

这样直观点

$sql = vsprintf(str_replace('?', '%s', $query->sql), $query->bindings);
4年前 评论
Richard852555 (楼主) 4年前
Richard852555 (楼主) 4年前
OnlyRed (作者) 4年前
Richard852555 (楼主) 4年前

vsprintf , 有模糊查询时会有问题 可以使用:

use Illuminate\Support\Str;

Str::replaceArray('?', $query->bindings, $query->sql);
4年前 评论
OnlyRed 4年前

都是高手,会玩

4年前 评论

代码放到 AppServiceProvider.php 文件中要好一些

4年前 评论

laravel 的哲学是你不需要关注具体的 sql 语句

4年前 评论
Richard852555 (楼主) 4年前
tu6ge-php (作者) 4年前
Richard852555 (楼主) 4年前