在 laravel 5.6 中找不到 Trait 'App\HasRoles' 错误

Posted

技术标签:

【中文标题】在 laravel 5.6 中找不到 Trait \'App\\HasRoles\' 错误【英文标题】:Trait 'App\HasRoles' not found error in laravel 5.6在 laravel 5.6 中找不到 Trait 'App\HasRoles' 错误 【发布时间】:2019-03-08 00:26:54 【问题描述】:

我尝试通过 laravel 5.6 角色权限系统

当我尝试使用默认身份验证(php artisan make:auth)注册时,我收到此错误

"Symfony\Component\Debug\Exception\FatalErrorException (E_UNKNOWN) 特征 'App\HasRoles' 未找到"

这是我的模型 user.php

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable

    use Notifiable;
    use HasRoles;

    protected $guard_name = 'web'; 

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

【问题讨论】:

【参考方案1】:

我猜你正在使用 Spatie Laravel 权限包。

如果是这样,您需要像这样导入类:

use Spatie\Permission\Traits\HasRoles;

【讨论】:

感谢它运行良好,我对这个 spatie 包非常陌生【参考方案2】:

运行此命令

作曲家安装

【讨论】:

【参考方案3】:

试试这个。导入 HasRoles 包如下;

use Spatie\Permission\Traits\HasRoles;

【讨论】:

【参考方案4】:

该特征没有被导入使用。如果你和我一样使用 PhpStorm,点击 HasRoles,然后按住alt 键并点击enter,选择import 击中enter 键,然后特征将被导入。您可以使用这些快捷方式进行其他导入,例如导入模型。

【讨论】:

【参考方案5】:

composer 需要 spatie/laravel-permission 安装这个 composer 然后它就可以工作了。因为你已经复制了 laravel 文件,但不是全部,所以安装它。它适用于我的项目

【讨论】:

【参考方案6】:

代码中的 use Spatie\Permission\Traits\HasRoles 行需要包含 Spatie/Laravel-permission 包才能工作。

步骤

    运行 'composer 需要 spatie/laravel-permission' 运行作曲家安装

那么你的代码应该可以工作了

【讨论】:

以上是关于在 laravel 5.6 中找不到 Trait 'App\HasRoles' 错误的主要内容,如果未能解决你的问题,请参考以下文章

将 mysql 从 5.6 升级到 5.7 后“在用户表中找不到任何匹配的行”

Laravel 4在TestCase中找不到测试

在 Laravel 中找不到异常类

在 laravel 5.4 中找不到类“Illuminate\Foundation\Application”

在 Laravel 中找不到类“App\Http\Controllers\Response”错误

在 Laravel 中找不到类“App\Http\Controllers\Excel”