我已经成功地将Eloquent用作Slim Framework 2中的独立包.
但现在我想使用Illuminate\Support\Facades\DB,因为我需要通过从2个表中获取信息并使用数据库中的Left Join和Counter来显示一些统计信息,如下所示:
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');
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Type: RuntimeException
Message: A facade root has not been set.
File: ...\vendor\illuminate\support\Facades\Facade.php
Line: 206
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
到目前为止,我已经发现,在此链接中我需要创建一个新的应用程序容器,然后将其绑定到Facade.但我还没有找到如何让它发挥作用.
这就是我开始其余的Eloquent和工作正常的方式:
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'my' => $app->config->get('settings'),
/* more settings ...*/
]);
/*booting Eloquent*/
$capsule->bootEloquent();
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
固定
为@ user5972059说,我不得不在$capsule->setAsGlobal();//This is important to make work the DB (Capsule)上面添加$capsule->bootEloquent();
然后,查询执行如下:
use …Run Code Online (Sandbox Code Playgroud) 所以我想进入Laravel,这是我第一次使用Vagrant,所以这是我的问题:
我已经完成了Laravel Homestead的介绍并设置了开发箱,似乎一切正常,并且确实看到了Laravel默认应用程序。在结束这一天后,我停止了使用本地无业游民vagrant halt并尝试使用vagrant upas 重新启动它之前,然后我收到
“(!)致命错误:未捕获RuntimeException:在/home/vagrant/code/laravel/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php的第234行上未设置外观根。”
尝试访问我的Laravel应用时出现消息。由于对于一个全新的项目也会发生这种情况,因此我认为我缺少了一些非常基本的知识,有人可以告诉我如何处理Vagrant,以便在重新启动虚拟机后仍可以到达我的项目吗?
除了最初通过composer创建Laravel应用程序外,我没有编写任何代码,该错误不会弹出,因为我试图使用某些东西并且做错了。我正在使用新应用程序的默认状态,它会弹出。