php - 在 Laravel 5 中使用中间件时找不到类 'App\Http\Middleware\DB'

标签 php database laravel-5 laravel-middleware

所以我想在 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 核心功能(如检查数据库)在工作。我该如何解决?

这是 laravel 显示的错误

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

最佳答案

您正在命名空间 App\Http\Middleware 中工作。因此,除非您另有指定,否则它会在该命名空间中搜索数据库。

任意设置

use DB;

或者使用数据库作为

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

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

关于php - 在 Laravel 5 中使用中间件时找不到类 'App\Http\Middleware\DB',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211608/

相关文章:

php mysql 从获取的数组行中删除编号键

sql - 我应该如何为 Django 设计数据库?

php - 从数据库中选择所有数据并使用 PHP 手动过滤

php - Laravel 数据透视表上的 Uuid

php - 使用 Amazon RDS MySQL 数据库托管在 Heroku 上的 Laravel 应用程序导致连接超时

php - 获取通过 mysql 搜索创建的数组中元素的位置 - PHP

php - 不选择mysql中的某些表

sql - 数据库设计 : why use an autoincremental field as primary key?

php - Laravel 5 - 验证为假时出现 MethodNotAllowedHttpException

laravel-5 - 使用 Eloquent 获取具有一种或另一种角色的所有用户