Laravel gate错误,没有这样的表:权限(SQL:select * from“permissions”)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel gate错误,没有这样的表:权限(SQL:select * from“permissions”)相关的知识,希望对你有一定的参考价值。
对于laravel测试环境,Laravel gate无法正常工作。在phpunit.xml
文件中,我使用sqlite
连接和:memory:
作为数据库。
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
在AuthServiceProvider
,我正在定义门,如下面的代码所示。
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
foreach($this->getPermissions() as $permission) {
$gate->define($permission->name, function($user) {
$user->hasRole($permission->roles);
});
}
}
protected function getPermissions() {
return Permission::with('roles')->get();
}
所以,什么时候我运行phpunit
。它显示错误no such table: permissions (SQL: select * from "permissions")
。
那么,请指导我如何在迁移后为测试环境定义门。
答案
试试这个 :
foreach($this->getPermissions() as $permission) {
$gate->define($permission->name, function($user)use($permisson) {
$user->hasRole($permission->roles);
});
}
如果你不使用use($permission)
,$ permission将是未定义的...
以上是关于Laravel gate错误,没有这样的表:权限(SQL:select * from“permissions”)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8 Gate 基于数据库工匠迁移错误中的级别