不能在 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
我正在使用 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