1

我的问题很简单,但我不知道:直到现在我一直在使用 java 和 eclipse 或 C#,所以这是一个“新世界”:)

如何调试我的 laravel 代码?

我正在使用 laravel 和 vuejs。我用 laragon 启动我的服务器,并使用 VScode。我尝试从 VScode 启动它(在 laragon 中添加了 xdebug dll),但它没有给我更多信息,而且我无法使用断点调试任何东西:

{
    "name": "Launch localhost",
    "type": "chrome",
    "request": "launch",
    "url": "http://127.0.0.1/",
    "webRoot": "C://laragon//www//projet"
},
{
    "name": "Launch index.php",
    "type": "chrome",
    "request": "launch",
    "file": "C://laragon//www//projet//index.php"
},

当我收到 sql 错误时,我得到的只是

app.js:651 Uncaught (in promise) Error: Request failed with status code 500
    at createError (app.js:651)
    at settle (app.js:814)
    at XMLHttpRequest.handleLoad (app.js:184)

如何查看我的 SQL 请求并获得“真正的错误”?我怎样才能正确调试?

提前非常感谢。

4

2 回答 2

3

您有多种选择来实现 SQL 日志记录:

1.通过在服务提供者中注册使用查询监听器(启动方法如下)

namespace App\Providers;
 
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use DB;
use Log;
 

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Schema::defaultStringLength(191);
 
        DB::listen(function($query) {
            Log::info(
                $query->sql,
                $query->bindings,
                $query->time
            );
        });
    }
}
  1. 使用查询日志请参考https://laravel.com/docs/5.0/database#query-logging

  2. 使用 laravel 调试器包请参考 https://github.com/barryvdh/laravel-debugbar

您可以使用 xdebug 调试 php,但我仍然更喜欢上述 3 中的任何选项。

于 2019-04-23T08:06:11.663 回答
0

你可以使用 Laravel Debugbar 来查看实时查询。它为调试目的提供了许多其他有用的信息。请检查此链接https://github.com/barryvdh/laravel-debugbar

还尝试通过在服务提供者中注册集合来使用查询侦听器将集合记录到 SQL 中:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Log;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        DB::listen(function ($query) {

            // $query->sql
            // $query->bindings
            // $query->time

            Log::useDailyFiles(storage_path().'/logs/query_log.log');
            $query = $query->sql;
            Log::info($query);
        });
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
于 2019-04-23T07:55:29.197 回答