laravel 5.3 如何查詢上一次執行的SQL語句?

請問laravel 5.3 如何查詢上一次執行的SQL語句?

阅读 3.5k
3 个回答

添加一个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);
            }

        });
    }
}

laravel debugbar
百度安装这个包 就能查看了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题