【问题标题】:Laravel gate error, no such table: permissions (SQL: select * from "permissions")Laravel门错误,没有这样的表:权限(SQL:从“权限”中选择*)
【发布时间】:2018-04-07 09:15:37
【问题描述】:

对于 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】:

    试试这个:

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 2013-01-04
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 2014-07-14
      相关资源
      最近更新 更多