Lumen 调用 DB::connection() returns null 即使 select() 成功

Lumen call to DB::connection() returns null even though select() is successful

我正在使用 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 table 正确调用 returns 数据。但是,DB::connection() returns:

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

为什么一个有效而另一个无效?

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

尝试

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

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

我会说仔细检查您的服务提供商。看起来您正在经历 the DB Capsule,而实际上这是打算在 Laravel/Lumen 之外使用。无论如何,如果您实际上正在使用 Capsule Manager,您可能必须在提供者的 boot 方法中注册它,而不是 register.

此外,为了进一步了解发生了什么,请将此添加到您的测试代码中:

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

如果需要,请分享结果,这将提供有关两种方法之间差异的更多信息。