Lumen вызов DB:: connection() возвращает значение null, хотя select() успешно

Я использую Lumen 5.3.1. $app->withFacades() и $app->withEloquent() были раскомментированы в app.php. В web.php запускаю следующий код:

$app->get('foo', function () {
    return app('db')->select("SELECT * FROM foo");

    return "Connected successfully to database " . DB::connection()->getDatabaseName();
});

Вызов select() корректно возвращает данные из таблицы foo. Однако DB::connection() возвращает:

FatalErrorException in Manager.php line 74: 
Call to a member function getConnection() on null

Почему одно работает, но не другое?

Ответ 1

Я бы сказал, дважды проверьте поставщиков услуг. Похоже, вы проходите через Капсулу DB, когда на самом деле это предназначено для использования из Laravel/Lumen. В любом случае, если вы фактически используете Capsule Manager, вам, вероятно, придется зарегистрировать его в методе boot поставщика, а не register.

Кроме того, чтобы узнать больше о том, что происходит, добавьте это в свой тестовый код:

dd(app('db'), DB::getFacadeRoot());

Поделитесь результатом, если хотите, это даст больше информации о различии между этими двумя методами.

Ответ 2

 app('db')->select("SELECT * FROM foo");
 DB::connection()->getDatabaseName();

попробуйте

app('db')->connection()->getDatabaseName();

или

\DB::connection()->getDatabaseName();