一般都是推荐用debugbar的,安装完了之后点画面左下角的小方块,找到queries栏,就看到SQL语句了,但这里我不讲这种傻瓜式工具,说点有技术含量的:
laravel输出sql语句不是很简单,需要自己写一些代码来实现这个功能。
把下面的代码放到 app/Providers/AppServiceProvider.php中的boot方法里 :
DB::listen(function ($sql) { foreach ($sql->bindings as $i => $binding) { if ($binding instanceof \DateTime) { $sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\''); } else { if (is_string($binding)) { $sql->bindings[$i] = "'$binding'"; } } } $query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql); $query = vsprintf($query, $sql->bindings); var_dump($query); });
网上很多监听的代码都是错的,laravel 5.2只传了一个参数进来,不是网上的3个。
现在我们可以在本地开发的时候进行sql的记录,便于调试程序。也可以不输出写入文件。