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

时间:2017-10-26 05:47:14

标签: laravel laravel-5 phpunit

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

因此,请指导如何在迁移后为测试环境定义门。

1 个答案:

答案 0 :(得分:0)

试试这个:

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

如果您不使用use($permission),则$ permission将被取消定义...