Laravel gate错误,没有这样的表:权限(SQL:select * from“permissions”)

问题描述 投票:0回答:1

对于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")

那么,请指导我如何在迁移后为测试环境定义门。

laravel laravel-5 phpunit
1个回答
0
投票

试试这个 :

  foreach($this->getPermissions() as $permission) {
            $gate->define($permission->name, function($user)use($permisson) {
                $user->hasRole($permission->roles);
            });
        }

如果你不使用use($permission),$ permission将是未定义的...

© www.soinside.com 2019 - 2024. All rights reserved.