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();