【问题标题】:Class 'App\Http\Middleware\DB' not found when using Middleware in Laravel 5在 Laravel 5 中使用中间件时找不到类“App\Http\Middleware\DB”
【发布时间】:2015-05-13 10:04:50
【问题描述】:

所以我想在 laravel 5 中检查数据库是否连接。我为此使用了中间件。

中间件代码

中间件.php

命名空间 App\Http\Middleware;

use Closure;


class MyMiddleware {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

            if(DB::connection()->getDatabaseName())
            {
                    echo "conncted sucessfully to database ".DB::connection()->getDatabaseName();
            }else{
                    die("Couldn't connect");
            }



        return $next($request);
    }

}

将其添加到 kernel.php

protected $routeMiddleware = [
    'error' => 'App\Http\Middleware\MyMiddleware',
    'auth' => 'App\Http\Middleware\Authenticate',
    'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
    'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
];

我想检查特定路线是否有错误

Route::get('/wow', ['middleware' => 'error', function () {
    //
}]);

中间件一切正常,但没有类或 laravel 核心功能(如 check db)正常工作。我该如何解决?

这是 laravel 显示的错误

FatalErrorException in MyMiddleware.php line 18:
Class 'App\Http\Middleware\DB' not found

【问题讨论】:

    标签: php database laravel-5 laravel-middleware


    【解决方案1】:

    您正在命名空间App\Http\Middleware 中工作。因此,除非您另有说明,否则它将在该命名空间中搜索 DB。

    任意设置

    use DB;
    

    或者使用数据库作为

    \DB::connection()->...
    

    关于命名空间的更多信息:http://php.net/manual/en/language.namespaces.php

    【讨论】:

    • 我在哪里使用数据库;?
    • 高于你的班级定义,在你的情况下高于或低于use Closure
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2015-07-12
    • 2015-05-10
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多