为什么无法访问模型中的方法?

时间:2018-11-11 22:11:43

标签: php laravel oop

这是我的模特:(App\User.php

namespace App;

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

class User extends Authenticatable
{
    use Notifiable;

    protected $connection = 'mysql';
    protected $table = 'users';

    public function hasAnyRole($roles)
    {
        if(is_array($roles)){
            foreach ($roles as $role){
                if($this->hasRole($role)){
                    return true;
                }
            }
        } else {
            if($this->hasRole($roles)){
                return true;
            }
        }
        return false;
    }

    public function hasRole($role)
    {
        if($this->role()->where('name',$role)->first()){
            return true;
        }
        return false;
    }
}

我需要在中间件中使用hasAnyRole()方法。这是我在中间件中的代码:

.
.
if( $request->user()->hasAnyRole($roles) ) {
.
. 

但是它抛出:

  

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

请注意,$request->user()存在。知道有什么问题吗?

1 个答案:

答案 0 :(得分:-1)

您的代码没有错误。尝试清除缓存:

composer dump-autoload

php artisan clear-compiled

php artisan cache:clear