請問laravel 5.3 如何查詢上一次執行的SQL語句?
添加一个ServiceProvider,打印一下日志就可以
<?php
namespace App\Providers;
use DB;
use Illuminate\Database\Events\QueryExecuted;
use Illuminate\Support\ServiceProvider;
use Log;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
}
/**
* @param $needle
* @param $replace
* @param $haystack
* @return mixed
*/
private function str_replace_once($needle, $replace, $haystack)
{
$pos = strpos($haystack, $needle);
if ($pos === false) {
return $haystack;
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}
public function boot()
{
DB::listen(function (QueryExecuted $query) {
if ($query->bindings) {
$sql = $query->sql;
foreach ($query->bindings as $val) {
if (is_string($val)) {
$val = "\"" . strval($val) . "\"";
}
$sql = $this->str_replace_once("?", $val, $sql);
}
Log::debug($sql, $query->bindings);
} else {
Log::debug($query->sql, $query->bindings);
}
});
}
}
5 回答4.9k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
5 回答1.9k 阅读
建议安装一个debugbar包,也可以直接实现,我写过一篇文章,可以看一下laravel 5.* 打印最后一次执行的sql|一沙网