调用vendor\laravel\framework\src\Illuminate\Database\Query的toSql方法:
$query = DB::table('users')->select('name', 'email as user_email');
$query->toSql();
本文介绍了Laravel5.* 打印出执行的sql语句的方法,分享给大家,具体如下:
打开app\Providers\AppServiceProvider.PHP,在boot方法中添加如下内容
5.2以下版本
// 先引入DB
use DB;
// 或者直接使用 \DB::
DB::listen(function($sql, $bindings, $time) {
dump($sql);
5.2及以上版本
use DB;
// 或者直接使用 \DB::
// 只能接受一个参数
QueryExecuted {#84 ▼
+sql: select *
\DB::listen(
function ($sql) {
foreach ($sql->bindings as $i => $binding) {
在laravel 框架中,一般使用链式操作来对数据库进行相关的增删改查。那么如何查看我们执行的sql 呢?
对于查询语句来说; 我们可以在链式操作后面加上->toSql();来打印执行的sql 语句。
但是,对于其他的就不适用了。所以可以采用以下的办法:
DB::enableQueryLog();
UserAddress::where('id',1)->decrement('last_used_at',1);
return response()->json(DB::getQueryLo
方法一:我们有时候想测试一段代码生产的 SQL 语句,比如: 我们想看 App\User::all(); 产生的 SQL 语句,我们简单在 routes.php 做个实验即可://app/Http/routes.phpRoute::get(‘/test-sql’, function() {DB::enableQueryLog();$user = App\User::all();return resp
在开发过程中,我们的接口会出现响应速度慢的问题,可能引起的原因是网络IO慢,服务器CPU处理速度慢,硬盘IO慢,代码复杂度高,数据库慢sql等原因引起,需要先排除清楚原因。在排查慢sql的过程中,需要记录sql的执行条数,执行的秒速,sql的复杂度进行分析,下面是laravel框架记录每次接口请求的所有sql记录。
1、如果是使用Eloquent ORM操作数据库的话,在sql查询时可以调用toSql()方法来获取sql:
App\User::where('name','like','%hezehua%')->toSql();
2、如果是执行原生Sql查询,则不能使用toSql()方法了,而是开启查询日志:
DB::enableQueryLog();
DB::sselect("select * ...
在laravel执行数据查询的时候,有的时候想查看sql 解析下看看表执行效率如何,以下仅供参考:
主要是执行表操作的时候引用enableQueryLog关键词,在打印DB::getQueryLog() 即可获取。
DB::connection()->enableQueryLog();
$query = $conn->table('表名'))
->where('id','1')
1.通过listen方法实现,一般是作为监听事件,加到服务里面。每次执行sql,输出对应的执行语句5.4版本直接这么使用DB::listen(function ($query) {
dd($query->sql,$query->bindings,$query->time);
// $query->bindings
// $qu
代码:DB::connection()->enableQueryLog();
$query = DB::table('test')->orderBy('id', 'desc')->get();//需要执行的SQL语句
echo '<pre>';
print_r(DB::getQueryLog());执行结果为:Array
[0] => Array
DB::connection()->enableQueryLog();#开启执行日志
$count = DB::table('test') //执行查询
->whereNull('deleted_at')
->where('id', '=', 3)
->where('Name', '=', '测...