不能在 Slim 中间件中使用 Eloquent

Can't use Eloquent inside Slim Middleware

我正在使用 slim 框架,我只是想从我的中间件中的数据库中检查一个值,但是我得到了一个错误:

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');

将其添加到容器后执行此操作。

我刚刚通过像这样编辑依赖文件解决了这个问题:

    $capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container['settings']['db']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$container['db'] = function ($container) {
    global $capsule;
    return $capsule;
};

在中间件中试试这个,但你必须先将中间件添加到应用程序。

$this->容器->db