Php Can';不要在Slim中间件中使用雄辩的语言
我使用的是slim framework,我只是试图检查中间件中数据库中的值,但出现了一个错误:Php Can';不要在Slim中间件中使用雄辩的语言,php,eloquent,slim,Php,Eloquent,Slim,我使用的是slim framework,我只是试图检查中间件中数据库中的值,但出现了一个错误: Message: Call to a member function connection() on null 这是我的中间件代码: ->add(function ($request, $response, $next) { $user = App\User::find($_SESSION['userid']); if($user->permission == 1
Message: Call to a member function connection() on null
这是我的中间件代码:
->add(function ($request, $response, $next) {
$user = App\User::find($_SESSION['userid']);
if($user->permission == 1 ){
$response = $next($request, $response);
}else{
return $response->withRedirect('noPermission');
}
return $response;
});
我要把这个加入我的小组
以下是我如何在dependencies.php文件中初始化eloquent的方法:
$container['db'] = function ($container) {
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container['settings']['db']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
return $capsule;
};
可能是在建立数据库连接之前执行的代码
谢谢你的帮助
注意:我可以在我的路线中使用eloquent容器可能尚未初始化eloquent的胶囊。你可以自己做
$container->get('db');
在将其添加到容器中后执行此操作。容器可能尚未初始化eloquent的胶囊。你可以自己做
$container->get('db');
在将其添加到容器后执行此操作。我刚刚通过如下方式编辑Dependencies文件解决了此问题:
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container['settings']['db']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$container['db'] = function ($container) {
global $capsule;
return $capsule;
};
我刚刚通过如下编辑Dependencies文件解决了这个问题:
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container['settings']['db']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$container['db'] = function ($container) {
global $capsule;
return $capsule;
};
在中间件内部尝试此方法,但必须首先将中间件添加到应用程序中
$this->container->db在中间件内部尝试此方法,但您必须首先将中间件添加到应用程序中
$this->container->db您在哪里初始化eloquent?在dependencies.php文件中,我们可以看到该文件吗?我在问题描述中添加了代码,我解决了它。您在哪里初始化eloquent?在dependencies.php文件中,我们可以看到该文件吗?我在问题描述中添加了代码,我解决了它