2016-02-15 39 views
17

私はEloquentをSlim Framework 2のスタンドアロンパッケージとして使用しています。間違ったエラー:ファサードルートが設定されていません

しかし、今、私は2つのテーブルから情報を取得し、左結合を使用して、このようなデータベースからのカウンターで、いくつかの統計情報を表示する必要があるので、私が点灯\サポート\ファサード\ DBを利用したいこと:

use Illuminate\Support\Facades\DB; 
$projectsbyarea = DB::table('projects AS p') 
     ->select(DB::raw('DISTINCT a.area, COUNT(a.area) AS Quantity')) 
     ->leftJoin('areas AS a','p.area_id','=','a.id') 
     ->where('p.status','in_process') 
     ->where('a.area','<>','NULL') 
     ->orderBy('p.area_id'); 

は、私は次のエラーを取得する:

Type: RuntimeException 
Message: A facade root has not been set. 
File: ...\vendor\illuminate\support\Facades\Facade.php 
Line: 206 

どのように私はそれを解決することができますか?

これまで私はthis linkに、新しいアプリケーションコンテナを作成してFacadeにバインドする必要があることを知りました。しかし、私はそれを動作させる方法を見出していません。

これは私が私の雄弁の残りの部分を開始し、細かい作業方法です:

use Illuminate\Database\Capsule\Manager as Capsule; 

$capsule = new Capsule(); 

$capsule->addConnection([ 
    'my'   => $app->config->get('settings'), 
    /* more settings ...*/ 
]); 

/*booting Eloquent*/ 
$capsule->bootEloquent(); 

が、私はこれをどのように修正すればよいですか?

固定 @ user5972059が言ったように、私はちょうど$capsule->bootEloquent();

次に、クエリは次のように実行され、上記$capsule->setAsGlobal();//This is important to make work the DB (Capsule)を追加する必要がありました:あなたがあなたのコードを変更する必要が

use Illuminate\Database\Capsule\Manager as Capsule; 
$projectsbyarea = Capsule::table('projects AS p') 
      ->select(DB::raw('DISTINCT a.area, COUNT(a.area) AS Quantity')) 
      ->leftJoin('areas AS a','p.area_id','=','a.id') 
      ->where('p.status','in_process') 
      ->where('a.area','<>','NULL') 
      ->orderBy('p.area_id') 
      ->get(); 

答えて

22

$Capsule = new Capsule; 
$Capsule->addConnection(config::get('database')); 
$Capsule->setAsGlobal(); //this is important 
$Capsule->bootEloquent(); 

あなたのクラスファイルの先頭に、あなたはimp ort:

use Illuminate\Database\Capsule\Manager as DB; 
+1

私はこれをどこに置くのですか? Laravel 5.4にアップグレードした後にエラーが発生しました: https://i.gyazo.com/a664efbe34aea117d2bbb8a8ad448951.png –

4

なぜ誰かが役に立たないと答えた人は、私にとってはうまくいった。私はuse Illuminate\Support\Facades\DB as DB;を使用していましたが、これは$capsule->setAsGlobal();のカプセルをグローバルに設定した後にuse Illuminate\Database\Capsule\Manager as DB;で動作しました。

+1

どこに配置すればよいですか? Laravel 5.4にアップグレードした後にエラーが発生しました。 https://i.gyazo.com/a664efbe34aea117d2bbb8a8ad448951.png –

+0

デフォルトでは、laravelの奇妙な起動は、雄弁なスタンドアロンを使用します。 あなたのエラーは何か他のものを提供します。plsは完全なエラーを共有します。 –

1

私はこの問題を '// $ app-> withFacades()'の前にコメントをつけて解決します。ブートストラップ/ app.php

2

未承認のapp.php $ app-> withFacades();を試してください。

+0

ありがとう!私はそれを忘れて、私のために働いた。 – Jamesst20

関連する問題