Поэтому я хочу проверить, подключена ли база данных в 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
Вы работаете в пространстве имен App\Http\Middleware
, Поэтому он ищет БД в этом пространстве имен, если не указано иное.
Либо установить
use DB;
Или использовать БД в качестве
\DB::connection()->...
Больше информации о пространствах имен: http://php.net/manual/en/language.namespaces.php
Других решений пока нет …