Error elocuente: no se ha establecido una raíz de fachada
He estado usando Eloquent como un paquete independiente en Slim Framework 2 con éxito.
Pero ahora que quiero hacer uso de Illuminate \ Support \ Facades \ DB ya que necesito mostrar algunas estadísticas obteniendo la información de 2 tablas y usando una combinación izquierda y un contador de la base de datos de esta manera:
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');
Obtuve el siguiente error:
Type: RuntimeException
Message: A facade root has not been set.
File: ...\vendor\illuminate\support\Facades\Facade.php
Line: 206
¿Cómo puedo resolverlo?
Hasta ahora he descubierto, eneste enlace que necesito crear un nuevo contenedor de aplicaciones y luego vincularlo a la Fachada. Pero no he descubierto cómo hacerlo funcionar.
Así es como comencé el resto de mi Eloquent y trabajando bien:
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'my' => $app->config->get('settings'),
/* more settings ...*/
]);
/*booting Eloquent*/
$capsule->bootEloquent();
¿Cómo puedo solucionar esto?
Fijo Como dijo @ user5972059, tuve que agregar$capsule->setAsGlobal();//This is important to make work the DB (Capsule)
justo arriba$capsule->bootEloquent();
Luego, la consulta se ejecuta así:
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();