Класс ‘App \ Http \ Middleware \ DB’ не найден при использовании Middleware в Laravel 5

Поэтому я хочу проверить, подключена ли база данных в laravel 5. Я использовал Middleware для этого.

Код промежуточного программного обеспечения

Middleware.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

1

Решение

Вы работаете в пространстве имен App\Http\Middleware, Поэтому он ищет БД в этом пространстве имен, если не указано иное.

Либо установить

use DB;

Или использовать БД в качестве

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

Больше информации о пространствах имен: http://php.net/manual/en/language.namespaces.php

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]