Uso con successo Eloquent come pacchetto autonomo in Slim Framework 2.Errore Eloquent: Una radice di facciata non è stata impostata
Ma ora che voglio fare uso di Illuminate \ Support \ Facciate \ DB da quando ho bisogno di mostrare alcune statistiche ottenendo informazioni da 2 tavoli e l'utilizzo di registrazione a sinistra e un contatore dal database come questo:
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');
ottengo il seguente errore:
Type: RuntimeException
Message: A facade root has not been set.
File: ...\vendor\illuminate\support\Facades\Facade.php
Line: 206
Come posso risolverlo?
Finora ho scoperto, in this link, che ho bisogno di creare un nuovo contenitore di app e quindi associarlo a Facade. Ma non ho scoperto come farlo funzionare.
Ecco come ho iniziato il resto della mia eloquente e lavorando bene:
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'my' => $app->config->get('settings'),
/* more settings ...*/
]);
/*booting Eloquent*/
$capsule->bootEloquent();
Come posso risolvere questo problema?
fisso Come @ user5972059 Detto questo, ho dovuto aggiungere $capsule->setAsGlobal();//This is important to make work the DB (Capsule)
appena sopra $capsule->bootEloquent();
Quindi, la query viene eseguita in questo modo:
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();
dove lo metto? Ho ricevuto questo errore dopo l'aggiornamento a Laravel 5.4: https://i.gyazo.com/a664efbe34aea117d2bbb8a8ad448951.png –