laravel sql语句完整打印

[toc]

1, laravel sql语句完整打印

<?php

namespace App\Providers;

use App\Models\Permission;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\DB;   // todo 加的

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // 设置默认字符串长度,  laravel6以下
        Schema::defaultStringLength(191);

        // 左侧菜单
        view()->composer('admin.layout', function ($view) {
            $menus = Permission::with([
                'childs' => function ($query) {
                    $query->with('icon');
                }
                , 'icon'])->where('parent_id', 0)->orderBy('sort', 'desc')->get();
            $view->with('menus', $menus);
        });

        // 打印sql语句调试用  
        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'";
                        }
                    }
                }

                // Insert bindings into query
                $query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);
                $query = vsprintf($query, $sql->bindings);

                // 报错数据到文件 (文件追加)
                $logFile = fopen(
                    //   /storage/logs/sql_input_query.log
                    storage_path('logs' . DIRECTORY_SEPARATOR . 'sql_input_query.log'),
                    'ab+'
                );
                fwrite($logFile, PHP_EOL . date('Y-m-d H:i:s') . ':  ' . $query . PHP_EOL);
                fclose($logFile);
            }
        );
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。