Красноречивая ошибка: корень фасада не был установлен
Я успешно использую Eloquent в качестве отдельного пакета в Slim Framework 2.
Но теперь, когда я хочу использовать Illuminate \ Support \ Facades \ DB, поскольку мне нужно показать некоторую статистику, получая информацию из 2 таблиц и используя левое соединение и счетчик из базы данных, например:
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');
Я получаю следующую ошибку:
Type: RuntimeException
Message: A facade root has not been set.
File: ...\vendor\illuminate\support\Facades\Facade.php
Line: 206
Как я могу решить это?
До сих пор я узнал, вэта ссылка что мне нужно создать новый контейнер приложения и затем связать его с фасадом. Но я не узнал, как заставить это работать.
Вот как я начал остальную часть моего Eloquent и работает нормально:
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'my' => $app->config->get('settings'),
/* more settings ...*/
]);
/*booting Eloquent*/
$capsule->bootEloquent();
Как это исправить?
Исправлена Как сказал @ user5972059, мне пришлось добавить$capsule->setAsGlobal();//This is important to make work the DB (Capsule)
чуть выше$capsule->bootEloquent();
Затем запрос выполняется так:
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();