Eloquent error: Eine Fassadenwurzel wurde nicht gesetzt
Ich habe Eloquent erfolgreich als eigenständiges Paket in Slim Framework 2 verwendet.
Aber jetzt, da ich Illuminate \ Support \ Facades \ DB verwenden möchte, da ich einige Statistiken anzeigen muss, indem ich die Informationen aus 2 Tabellen erhalte und einen Left Join und einen Counter aus der Datenbank wie folgt verwende:
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');
Ich erhalte den folgenden Fehler:
Type: RuntimeException
Message: A facade root has not been set.
File: ...\vendor\illuminate\support\Facades\Facade.php
Line: 206
Wie kann ich das lösen?
Soweit ich herausgefunden habe, indieser Lin dass ich einen neuen App-Container erstellen und ihn dann an die Fassade binden muss. Aber ich habe nicht herausgefunden, wie es funktioniert.
Dies ist, wie ich den Rest meines Eloquent begann und gut funktionierte:
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'my' => $app->config->get('settings'),
/* more settings ...*/
]);
/*booting Eloquent*/
$capsule->bootEloquent();
Wie kann ich das beheben?
Fes Wie @ user5972059 sagte, musste ich @ hinzufüg$capsule->setAsGlobal();//This is important to make work the DB (Capsule)
gleich darüber$capsule->bootEloquent();
Dann wird die Abfrage folgendermaßen ausgeführt:
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();