试图获得非对象一对多实现的财产'name'



我的模型:

admin.php

public function role()
{
    return $this->belongsTo('AppRole');
}

在我的控制器上:

logincontroller.php

protected function sendLoginResponse(Request $request)
{
    $request->session()->regenerate();
    $this->clearLoginAttempts($request);
    foreach($this->guard()->user()->role as $role)
    {
        if($role->name=='SuperAdmin')
        {
            return redirect(route('super.admin.index'));
        }
        elseif ($role->name == 'Admin')
        {
            return redirect(route('super.admin.index'));
        }
    }
}

在我的Superadmin Middeware上:

 public function handle($request, Closure $next)
{
    $role=Auth::user()->role;
    if (is_null($role)) {
        return redirect(route('/'));
    }
  if($role->name=='SuperAdmin')
  {
      return $next($request);
  }
  return redirect('/');
}

}

我创建了一个名为:Admin和自定义登录系统的自定义护罩。我已经使用了一对一的关系,但是它给了我:

试图获得非对象的属性

您的role关系是belomgsTo。对于这种情况$this->guard()->user()->role返回Role对象或null的实例。

protected function sendLoginResponse(Request $request)
{
    $request->session()->regenerate();
    $this->clearLoginAttempts($request);
    $role = $this->guard()->user()->role;
    if (is_null($role)) {
       return redirect(route('super.admin.index')); 
    }    
    if($role->name=='SuperAdmin') {
        return redirect(route('super.admin.index'));
    } elseif ($role->name == 'Admin') {
        return redirect(route('super.admin.index'));
    }
}

中间软件

public function handle($request, Closure $next)
{
    if (is_null(Auth::user())) {
        return redirect(route('/'));
    }
    $role=Auth::user()->role;
    if (is_null($role)) {
        return redirect(route('/'));
    }
  if($role->name=='SuperAdmin')
  {
      return $next($request);
  }
  return redirect('/');
} 

最新更新