Erro eloquente: uma raiz de fachada não foi definida
Uso o Eloquent como um pacote independente no Slim Framework 2 com êxito.
Mas agora que eu quero usar o Illuminate \ Support \ Facades \ DB, pois preciso mostrar algumas estatísticas, obtendo as informações de 2 tabelas e usando um Left Join e um Counter no banco de dados como este:
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');
Estou tendo o erro a seguir:
Type: RuntimeException
Message: A facade root has not been set.
File: ...\vendor\illuminate\support\Facades\Facade.php
Line: 206
Como posso resolver isso?
Até agora eu descobri, emesse link que eu preciso criar um novo contêiner de aplicativo e vinculá-lo à fachada. Mas não descobri como fazê-lo funcionar.
Foi assim que comecei o resto do meu Eloquent e funcionando bem:
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'my' => $app->config->get('settings'),
/* more settings ...*/
]);
/*booting Eloquent*/
$capsule->bootEloquent();
Como faço para corrigir isso?
Fixo Como @ user5972059 disse, eu tive que adicionar$capsule->setAsGlobal();//This is important to make work the DB (Capsule)
logo acima$capsule->bootEloquent();
Em seguida, a consulta é executada assim:
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();