services register providers container app eloquent illuminate-container

eloquent - register - service container laravel



Error elocuente: no se ha establecido una raĆ­z de fachada (4)

He estado usando Eloquent como un paquete independiente en Slim Framework 2 con éxito.

Pero ahora que quiero usar Illuminate / Support / Facades / DB ya que necesito mostrar algunas estadísticas obteniendo la información de 2 tablas y usando una combinación de izquierda y un contador de la base de datos como esto:

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, en este enlace, que necesito crear un nuevo contenedor de aplicaciones y luego vincularlo a la Fachada. Pero no he descubierto cómo hacer que funcione.

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?

Corregido Como dijo @ user5972059, tuve que agregar $capsule->setAsGlobal();//This is important to make work the DB (Capsule) justo por encima de $capsule->bootEloquent();

Entonces, 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();


Por qué alguien marcó una respuesta no útil, funcionó perfectamente para mí. estaba utilizando use Illuminate/Support/Facades/DB as DB; pero esto funcionó use Illuminate/Database/Capsule/Manager as DB; después de configurar la cápsula como $capsule->setAsGlobal(); global $capsule->setAsGlobal(); en delgado


Pruebe la aplicación app.php $ app-> withFacades ();


Simplemente resuelvo este problema descomentando ''//'' antes de ''// $ app-> withFacades ()''; en bootstrap / app.php


Tienes que cambiar tu código para:

$Capsule = new Capsule; $Capsule->addConnection(config::get(''database'')); $Capsule->setAsGlobal(); //this is important $Capsule->bootEloquent();

Y al comienzo de su archivo de clase tiene que importar:

use Illuminate/Database/Capsule/Manager as DB;