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;