对 DB::connection() 的 Lumen 调用返回 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表中的数据。但是,DB::connection()返回:

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

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

我会说仔细检查您的服务提供商。看起来您正在经历DB胶囊,而实际上这是用于Laravel/Lumen之外的。无论如何,如果您实际上正在使用胶囊管理器,则可能必须在提供程序的boot方法中注册它,而不是register

此外,为了了解有关正在发生的事情的更多信息,请将其添加到您的测试代码中:

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

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

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

尝试

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

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