BadMethodCallException 调用未定义的方法 App\Models\User::hasAnyRole()

Posted

技术标签:

【中文标题】BadMethodCallException 调用未定义的方法 App\\Models\\User::hasAnyRole()【英文标题】:BadMethodCallException Call to undefined method App\Models\User::hasAnyRole()BadMethodCallException 调用未定义的方法 App\Models\User::hasAnyRole() 【发布时间】:2021-06-24 05:29:10 【问题描述】:

我正在使用 Laravel-Permissions 并写在 rotes\web.php:

Route::group(['middleware' => ['role:admin']], function () 
    Route::get('/admin', function () 
        return "Test";
    );
);

我在 app\Http\Kernel.php 中添加了:

protected $routeMiddleware = [
    // ...
    'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
    'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
    'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
];

错误:

【问题讨论】:

请分享您的用户模型 【参考方案1】:

您忘记包含角色特征

use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable

    use HasRoles; //this line

    // ...

【讨论】:

【参考方案2】:

确保您的 User 模型使用 Spatie\Permission\Traits\HasRoles 特征。

<?php

use Spatie\Permission\Traits\HasRoles;

class User

    use HasRoles;

【讨论】:

以上是关于BadMethodCallException 调用未定义的方法 App\Models\User::hasAnyRole()的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 单元测试错误:BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::make()

删除()上的 Laravel BadMethodCallException

Laravel Artisan 迁移 [BadMethodCallException]

BadMethodCallException 方法 orderBy 不存在

BadMethodCallException : 方法 Illuminate\Database\Query\Builder::offers 不存在

Laravel 2 BadMethodCallException 实例:'int 不存在'和'方法不存在'