Używam Eoxquent jako samodzielnego pakietu w Slim Framework 2 z powodzeniem.Eonquent error: Korzeń elewacji nie został ustawiony
Ale teraz, że chcę skorzystać z Illuminate \ Support \ Fasady \ DB ponieważ muszę pokazać niektóre statystyki przez uzyskanie informacji od 2 tabel i przy użyciu LEFT JOIN i licznik z bazy danych takie jak to:
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');
pojawia się następujący błąd:
Type: RuntimeException
Message: A facade root has not been set.
File: ...\vendor\illuminate\support\Facades\Facade.php
Line: 206
Jak mogę go rozwiązać?
Do tej pory dowiedziałem się, w this link, że muszę utworzyć nowy kontener aplikacji, a następnie powiązać go z elewacją. Ale nie dowiedziałem się, jak to działa.
ten sposób zacząłem resztę wymowny i działa bez zarzutu:
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'my' => $app->config->get('settings'),
/* more settings ...*/
]);
/*booting Eloquent*/
$capsule->bootEloquent();
Jak mogę rozwiązać ten problem?
Fixed Jako @ user5972059 powiedział, musiałem dodać $capsule->setAsGlobal();//This is important to make work the DB (Capsule)
tuż nad $capsule->bootEloquent();
Następnie kwerenda jest wykonywana tak:
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();
gdzie mam to umieścić? Otrzymuję ten błąd po aktualizacji do Laravel 5.4: https://i.gyazo.com/a664efbe34aea117d2bbb8a8ad448951.png –