2016-11-06 104 views
10

我正在使用流明5.3.1。已在app.php中取消注释$app->withFacades()$app->withEloquent()。在web.php我运行下面的代码:即使select()成功,流明调用DB :: connection()也会返回null

$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 

为什么一个工作,而不是其他?

+0

您是否配置了多个数据库?你可以尝试DB ::连接(_databasename _) - > getDatabaseName()并查看? – blackpen

+0

我只有一个配置,使用.env文件。当我做出改变时,你建议我得到同样的错误。 – ebakunin

回答

4

我说仔细检查您的服务商。看起来你正在通过the DB Capsule,实际上这是打算用于Laravel/Lumen。无论如何,如果您实际上使用Capsule Manager,您可能必须在提供商的boot方法中注册,而不是register。如果你想,这会给关于这两种方法之间的差异更多信息

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

分享结果:

此外,为了更多地了解这是怎么回事,它添加到您的测试代码。

+0

代码没有从'DB'识别'getFacadeRoot()',所以我使用'Auth :: getFacadeRoot()'代替。结果是非常长的数据转储。你在找什么信息? – ebakunin

+1

'数据库'是不是一个门面。然后,执行'dd(DB :: class)',然后检查别名和注册的提供者,以便找出“DB”被绑定的内容。另外,你是否使用任何'use'语句? – alepeino

+0

'使用'声明是问题。 '使用Illuminate \ Database \ Capsule \ Manager作为数据库'给了我一个'connection()'方法的访问权限,但不是正确的。删除'use'语句解决了这个问题。谢谢! – ebakunin

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

尝试

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

\DB::connection()->getDatabaseName(); 
相关问题