Laravel-如果表存在则仅查询模型

时间:2019-03-02 18:11:32

标签: php laravel laravel-5

因此,我的boot()中有一个AuthServiceProvider,它从数据库中读取了一些Permission

    foreach (Permission::all() as $perm) {
        Gate::define($perm->name, function ($user) use ($perm) {
            return $user->hasPermission($perm->name);
        });
    }

唯一的问题是,当我执行migrate:fresh时,一切都会中断(有一个例外),这是因为表不存在。

如何告诉Permission模型仅在表存在的情况下才加载数据?

1 个答案:

答案 0 :(得分:2)

要回答所问的问题,可以使用以下方法:

if (Schema::hasTable('mytable')) {

}

顺便提一下,以这种方式从数据库注册门有点反模式。服务提供商通常还没有访问经过身份验证的用户的权限,因为它们负责准备应用程序,并在会话中间件之类的东西之前对用户进行身份验证。还有许多其他方法来构造authorization不会引起诸如此类的问题。