2016-11-06 5 views
10

私はルーメン5.3.1を使用しています。 $app->withFacades()および$app->withEloquent()は、app.phpではコメントを外しています。 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 

なぜ、1つは動作しますが、もう1つは動作しませんか?

+0

複数のデータベースが設定されていますか? DB :: connection(_databasename _) - > getDatabaseName()を試してみてください。 – blackpen

+0

.envファイルを使用して設定されているのは1つだけです。私が変更を加えたとき、私は同じエラーが出ることを示唆しました。 – ebakunin

答えて

4

を試してみてください。 the DB Capsuleを通過しているようですが、実際にはLaravel/Lumenからの使用を想定しています。とにかく、実際にカプセルマネジャーを使用している場合は、registerではなく、プロバイダのbootメソッドで登録する必要があります。テストコードにこれを追加し、何が起こっているかについての詳細を調べるためにも

、:

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

結果を共有したい場合は、この2つの方法の違いに関する詳細な情報を提供します。

+0

コードは 'DB'の' getFacadeRoot() 'を認識しませんでしたので、代わりに' Auth :: getFacadeRoot() 'を使用しました。その結果、非常に長いデータ・ダンプが発生します。どんな情報をお探しですか? – ebakunin

+1

'DB'はファサードではありません。次に 'dd(DB :: class)'を実行し、エイリアスと登録されたプロバイダをチェックして、どのDBがバインドされているかを調べます。また、 'use'ステートメントを使用していますか? – alepeino

+0

'use'ステートメントが問題でした。 'Illuminate \ Database \ Capsule \ ManagerをDBとして使用する'は、 'connection()'メソッドにアクセスできましたが、正しいものはアクセスできませんでした。 'use'ステートメントを削除すると、この問題が解決されました。ありがとうございました! – ebakunin

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

は、私はあなたのサービスプロバイダをダブルチェックすると言うだろう

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

または

\DB::connection()->getDatabaseName(); 
関連する問題